芹菜是运行长期运行流程的合适技术吗?我只需要启动/停止?

时间:2016-01-24 04:28:13

标签: python django celery django-celery

我的python程序不是你为其创建init脚本的那种东西。它只是一个长时间运行的过程,需要运行直到我告诉它关闭。

我运行程序的多个实例,每个实例都有不同的cmd-line args。仅供参考,该计划就像物理导师一样与我的用户聊天,每个实例代表不同的物理问题。

我的Django应用程序使用Redis pub / sub

与这些进程通信

我希望改进从Django视图开始/停止和管理这些进程的方式。我不知道的是Celery是否是适合我的技术。许多芹菜文档使它听起来像是运行短暂的异步任务,例如他们的“添加”()'示例任务。

目前,我的观点正在做一些可怕的产生'启动流程的东西,我正在使用Redis哈希以完全临时的方式跟踪哪些进程在运行。

我的程序实际上只有daemonizes如果它传递-d参数,我想如果使用芹菜,我将不会传递它,尽管它输出到stdout / stderr如果我没有通过该选项。

我真正需要的是:

  • 启动/停止流程的方法
  • 有关启动/停止操作是否成功的信息
  • 有关我的哪些进程正在运行的信息

我不想要的是:

  • 运行相同配置的进程的多个实例
  • 需要替换我与Django(Redis pub / sub)沟通的方式

芹菜听起来像是我用于过程管理的适当技术吗?

1 个答案:

答案 0 :(得分:2)

也许你可以利用supervisor来做这件事。它擅长运行和监视长时间运行的进程,并且具有XML-RPC interface

您可以查看我所做的here示例(示例输出here)。