【发布时间】:2014-06-16 13:46:19
【问题描述】:
我以一种不常见的方式使用 celery - 我在 celery 启动时创建自定义进程,这个进程应该在 celery 运行时一直运行。 芹菜工人在他们的任务中使用这个过程(不需要详细信息)。
我从命令行运行 celery,一切正常:
celery -A celery_jobs.tasks.app worker -B --loglevel=warning
但是当我使用celeryd 守护 celery 时,没有办法阻止它。
命令celeryd stop 尝试停止 celery 但从未停止。
当我在这两种情况下检查进程树时,有区别 - 从命令行运行时,父进程显然是 celery 进程(主进程有 celery worker 作为子进程)。杀死(停止)父 celery 进程将停止所有 celery 工人和我的自定义进程。
但是当使用celeryd 运行时,我的自定义进程有父/sbin/init - 并且调用celeryd stop 不起作用 - 似乎主 celery 进程正在等待某些东西,或者无法停止我的自定义进程。不是 celery 的子进程。
我对流程了解不多,也不容易找到信息,因为我不知道我应该搜索什么,所以任何提示都非常感谢。
【问题讨论】: