我需要构建一个处理两种类型任务的系统。一种类型可以创建更多自己或另一种类型的任务。工人很少(2-3),只有一个主人。最重要的要求是系统应该优雅地处理重新启动:即,在重新启动时,正在进行的任务应该从头开始,工作人员应该选择在重新启动之前排队的任务。 看看芹菜它似乎适合这个用例。但是,我有几个问题:
1)Celery是否能够按照描述处理整个系统的重启? (芹菜+工人+经纪人,一切都重新启动,完全断电)。
2)在这种情况下使用的最佳代理是什么?我更喜欢SQLAlchemy + SQLite,因为它更“自包含”,但如果RabbitMQ是正确的选择,鉴于需要优雅地处理完全重启,那么我可以继续使用它。
答案 0 :(得分:13)
1)Celery是否能够按照描述处理整个系统的重启? (芹菜+工人+经纪人,一切都重新启动,完全断电)。
是的,当您在RabbitMQ上创建自己的队列时(持久 队列)即使重启服务器后任务也将如此 恢复并将由芹菜进行。
2)在这种情况下使用的最佳代理是什么?我更喜欢SQLAlchemy + SQLite,因为它更“自包含”,但如果RabbitMQ是正确的选择,鉴于需要优雅地处理完全重启,那么我可以继续使用它。
使用RabbitMQ。我们正在使用RabbitMQ + Celery进行生产。所以我愿意 建议您使用RabbitMQ作为经纪人。
Celery + RabbitMQ Best Practice
注意: