Celery:如何批量生产任务?

Yan*_* HG 5 python rabbitmq celery

我有一个大循环来生成任务:

for i in range(1000):
    receiver.apply_async(args=(i), kwargs={}, exchange=topic_exchange, routing_key=topic_key)
Run Code Online (Sandbox Code Playgroud)

celery.contrib.batches我发现在 celery 3.X 之前或celery_batchescelery 4.X 之后有一个模块。但这个模块似乎不支持这样的参数。那么我该怎么做呢?

我正在使用 celery 4.4.7 和rabbitmq。

Dej*_*kic 2

如果“批量”是指所有任务的一小部分(块),那么您可以查看Chunks。如果您关心结果,我建议您使用Chord ,而不是使用块(它们毕竟是为了不同的目的而制作的)。如果不这样做,那么只需创建一个Group即可。数千个任务不算什么——我们有由数万个任务组成的和弦/组,而 Celery 可以很好地应对这一负载。