我正在研究一个基于Python的系统,将长时间运行的任务排入工作人员。
任务来自生成“令牌”的外部服务,但是一旦它们基于该令牌创建,它们应该连续运行,并且仅在通过代码明确删除时停止。 该任务启动一个WebSocket并在其上循环。如果套接字已关闭,则会重新打开它。基本上,任务不应该得出结论。
我在构建此解决方案时的目标是:
我们所有的服务器端都是Python,看起来Celery是最好的平台。 我们在这里使用合适的技术吗?我们应该考虑的任何其他架构选择?
感谢您的帮助!
答案 0 :(得分:0)
根据docs
可能会得到您想要的内容当启动关闭时,工作人员将在实际终止之前完成所有当前正在执行的任务,因此如果这些任务很重要,您应该等待它完成任何激烈的操作(如发送KILL信号)。
如果工作人员在考虑周期之后不会关闭,例如由于任务陷入无限循环,您可以使用KILL信号强制终止工作人员,但要注意当前正在执行的任务将丢失(除非任务设置了acks_late选项。
总的来说,我认为你需要实现一些额外的应用程序端作业控制,以及锁定服务。
但是,是的,总的来说你可以用芹菜做到这一点。是否有更好的技术......这超出了本网站的范围。