芹菜任务可以重启吗?
Can Celery tasks survive restart?
我需要构建一个系统来处理两种类型的任务。一种类型可以创建自己或另一种类型的更多任务。工人(2-3)很少,只有一个主机。最重要的要求是系统应该优雅地处理重启:即在重启时,正在进行的任务应该从头开始,工作人员应该选择重启前排队的任务。
查看 Celery,它似乎适合这个用例。但是,我有几个问题:
1) Celery 是否能够按照描述处理整个系统的重启? (Celery + workers + broker,一切重启,完全断电)。
2) 在这种情况下使用什么经纪人最好?我更喜欢 SQLAlchemy + SQLite,因为它更 "self contained",但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。
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",但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。
USe RabbitMQ. we are using RabbitMQ + Celery in production. So i would
suggest you to use RabbitMQ as a broker.
Celery + RabbitMQ Best Practice
备注:
- 使用更多队列(即不只是默认队列)
- 使用优先工作人员
- 使用 Celery 的错误处理机制
我需要构建一个系统来处理两种类型的任务。一种类型可以创建自己或另一种类型的更多任务。工人(2-3)很少,只有一个主机。最重要的要求是系统应该优雅地处理重启:即在重启时,正在进行的任务应该从头开始,工作人员应该选择重启前排队的任务。 查看 Celery,它似乎适合这个用例。但是,我有几个问题:
1) Celery 是否能够按照描述处理整个系统的重启? (Celery + workers + broker,一切重启,完全断电)。
2) 在这种情况下使用什么经纪人最好?我更喜欢 SQLAlchemy + SQLite,因为它更 "self contained",但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。
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",但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以使用它。
USe RabbitMQ. we are using RabbitMQ + Celery in production. So i would suggest you to use RabbitMQ as a broker.
Celery + RabbitMQ Best Practice
备注:
- 使用更多队列(即不只是默认队列)
- 使用优先工作人员
- 使用 Celery 的错误处理机制