我需要构建一个处理两种类型任务的系统。一种类型可以创建更多其自身或另一种类型的任务。工作人员数量很少(2-3),并且只有一名主机。最重要的要求是系统应该优雅地处理重新启动:即重新启动时,正在进行的任务应该从头开始,并且工作人员应该选择重新启动之前排队的任务。
看看 Celery,它似乎适合这个用例。但是,我有几个问题:
1)Celery 是否能够按照描述处理整个系统的重启? (Celery+workers+broker,一切重启,彻底断电)。
2)最适合这种情况的经纪商是什么?我更喜欢 SQLAlchemy + SQLite,因为它更“自包含”,但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以选择它。
1)Celery 是否能够按照描述处理整个系统的重启? (Celery+workers+broker,一切重启,彻底断电)。
是的,当您在 RabbitMQ 上创建自己的队列时(执着的
队列)即使在服务器重新启动后,任务也会是
恢复并将由 Celery 执行。
2)最适合这种情况的经纪商是什么?我更喜欢 SQLAlchemy + SQLite,因为它更“自包含”,但如果 RabbitMQ 是正确的选择,考虑到优雅地处理完全重启的要求,那么我可以选择它。
使用 RabbitMQ。我们在生产中使用 RabbitMQ + Celery。所以我会
建议您使用 RabbitMQ 作为代理。
Celery + RabbitMQ 最佳实践
消息可靠性
Notes :
- 使用更多队列(即不仅仅是默认队列)
- 使用优先工作人员
- 使用 Celery 的错误处理机制
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)