芹菜任务可以重启吗?

Can Celery tasks survive restart?

我需要构建一个系统来处理两种类型的任务。一种类型可以创建自己或另一种类型的更多任务。工人(2-3)很少,只有一个主机。最重要的要求是系统应该优雅地处理重启:即在重启时,正在进行的任务应该从头开始,工作人员应该选择重启前排队的任务。 查看 Celery,它似乎适合这个用例。但是,我有几个问题:

1) Celery 是否能够按照描述处理整个系统的重启? (Celery + workers + broker,一切重启,完全断电)。

2) 在这种情况下使用什么经纪人最好?我更喜欢 SQLAlchemy + SQLite,因为它更 "self contained",但如果 R​​abbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。

1) Celery 是否能够按照描述处理整个系统的重启? (Celery + worker + broker,一切重启,彻底断电)。

Yes, When you create your own queue on RabbitMQ ( Persistent queue ) even after the restart of your server the task will be resumed and will be carried out by Celery.

2) 最适合这种情况的经纪人是什么?我更喜欢 SQLAlchemy + SQLite,因为它更 "self contained",但如果 R​​abbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。

USe RabbitMQ. we are using RabbitMQ + Celery in production. So i would suggest you to use RabbitMQ as a broker.

Celery + RabbitMQ Best Practice

Message Reliability

备注:

  1. 使用更多队列(即不只是默认队列)
  2. 使用优先工作人员
  3. 使用 Celery 的错误处理机制