作为 Ubuntu 服务的 Celery 守护进程在从终端运行时不会消耗任务

作为 Ubuntu 服务的 Celery 守护进程在从终端运行时不会消耗任务

在 Ubuntu 11.10 上,

我必须使用 celery 从 django 发出 python 任务。

我目前正在同一台机器上进行测试,但最终芹菜工作者应该在远程机器上运行。

django 使用以下设置:

BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_VHOST = "/my_vhost"
BROKER_USER = "celery"
BROKER_PASSWORD = "celery"

我还可以看到我的任务排队 http://localhost:55672/#/queues

celery 守护进程使用以下配置(celeryconfig.py):

BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_USER = "celery"
BROKER_PASSWORD = "celery"
BROKER_VHOST = "/my_vhost"
CELERY_RESULT_BACKEND = "amqp"
import os
import sys
sys.path.append(os.getcwd())
CELERY_IMPORTS = ("tasks", )

跑步

celeryd -l info

运行良好,现在我想将其作为服务运行。

我已遵循 http://ask.github.com/celery/cookbook/daemonizing.html

现在我尝试使用以下命令运行它:

sudo /etc/init.d/celeryd start

但是该消息没有被消费,芹菜日志中也没有错误。

/etc/默认/celeryd

CELERYD_NODES="w1"
CELERYD_CHDIR="/path/to/django/project"
CELERYD_OPTS="--time-limit=300 --concurrency=1"
CELERY_CONFIG_MODULE="celeryconfig"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"

# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"

我也在 Ubuntu 中创建了用户 celery,不确定是否有必要。

任何帮助都将不胜感激,谢谢,盖伊

答案1

我们正在使用导师在 Ubuntu 上运行 Celery,它运行良好,包括定期状态检查和重新启动死亡进程。

答案2

更改了 celeryconfig.py 权限(所有者):

sudo chown root:staff celeryconfig.py

并且它有效......在我意识到之后很容易追踪:

sudo /etc/init.d/celeryd status

给出了信息丰富的错误解释。

盖伊

相关内容