芹菜是否适用于 运行 长 运行 过程我只需要 start/stop?

Is celery the appropriate tech for running long-running processes I simply need to start/stop?

我的 python 程序不是您要为其创建初始化脚本的那种东西。这只是一个漫长的 运行ning 过程,需要 运行 直到我告诉它关闭。

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

我的 Django 应用使用 Redis pub/sub

与这些进程通信

我想改进 start/stop 从 Django 视图管理这些进程的方式。我不知道 Celery 是否适合为我做这件事。许多 celery 文档让它听起来像是用于 运行 短暂的异步任务,例如他们的 'add()' 示例任务。

目前我的观点正在做一些糟糕的 'spawn' 事情来启动进程,并且我正在跟踪哪些进程正在 运行 以完全临时的方式使用 Redis 哈希.

我的程序实际上只有在向它传递一个 -d 参数时才会进行守护进程,我想如果使用 celery 我 不会 传递它,尽管它会输出到stdout/stderr 如果我不通过该选项。

我真正需要的是:

我不想要的是:

celery 听起来是否适合我用于流程管理的技术?

也许你可以利用 supervisor for this. It is good at running and monitoring long running processes and has an XML-RPC interface

您可以查看我所做的示例 here (example output here)。