我们经常需要使用Celery(由RabbitMQ支持)使许多消息入队(将它们分成1000组)。有没有人可以做到这一点?我们基本上是试图在一个send_task调用中“分批”大量消息。
如果我猜到了,我们将需要“更深入”,并涉足kombu
甚至py-amqp
。
致谢,
尼古拉斯
答案 0 :(得分:1)
无需“深入”并直接使用Kombu。 -很少有适合不同用例的解决方案:
如果您更喜欢使用Celery工作流程,则可能希望利用chunks。
没有什么可以阻止您数千次调用send_task()了。
如果调用send_task()的速度太慢,则可能要使用线程池,该线程池会同时向队列发送N个任务。
答案 1 :(得分:0)
我-至少是暂时完成的-通过以下方式确保芹菜连接保持打开状态:
with celery.Celery(set_as_current=False) as celeryapp:
...
with celeryapp.connection_for_write(connect_timeout=connection_timeout) as conn:
for message in messages:
celeryapp.send_task(...)
这样,我不必重新创建用于为每条消息生成的连接。