【发布时间】:2015-11-16 20:47:01
【问题描述】:
我正在开发一个基于 Python 的系统,以便将长时间运行的任务排入队列。
任务源自生成“令牌”的外部服务,但是一旦基于该令牌创建它们,它们应该连续运行,并且只有在被代码明确删除时才会停止。
该任务启动一个 WebSocket 并在其上循环。如果套接字关闭,它会重新打开它。基本上,任务不应该得出结论。
我构建此解决方案的目标是:
- 在正常重启工作器时(例如加载新代码),任务应重新添加到队列中,并由某个工作器拾取。
- 发生不正常关机时也会发生同样的情况。
- 2 个工人不应该在同一个令牌上工作。
- 其他进程可能会创建更多任务,这些任务应定向到处理特定令牌的同一工作人员。这将通过将这些任务发送到以令牌命名的队列来解决,工作人员应该在启动令牌的任务后开始收听该队列。我列出这个要求是为了解释为什么这里甚至需要任务引擎。
- 独立服务器、快速代码重新加载等 - 每个任务的停机时间最短。
我们所有的服务器端都是 Python,看起来 Celery 是它的最佳平台。 我们在这里使用了正确的技术吗?我们应该考虑其他任何架构选择吗?
感谢您的帮助!
【问题讨论】:
标签: python rabbitmq task celery long-running-processes