过去几天我一直在绞尽脑汁,我已经看到了stackoverflow上的其他问题(因为这是一个重复的问题)而且我已经尝试了一切来完成这项工作,工作人员运行正常但是芹菜没有开始作为一个过程。
我运行命令:
sudo service celeryd start
我得到了:
celery init v10.1.
Using config script: /etc/default/celeryd
celery multi v3.1.23 (Cipater)
> Starting nodes...
> worker1@ip-172-31-21-215: OK
我跑:
sudo service celeryd status
我得到了:
celery init v10.1.
Using config script: /etc/default/celeryd
celeryd down: no pidfiles found
celeryd down:没有发现pidfiles 错误是我需要解决的问题。
我知道这个问题是重复的,但在这个问题上仍然跟我一起,因为我已经尝试了所有这些问题但仍然无法解决问题。
我正在Amazon Web Services上部署此脚本。我正在使用虚拟环境。
init.d
脚本直接来自here,然后我给了它所需的权限。
这是我的配置文件:
# Names of nodes to start
# most people will only start one node:
CELERYD_NODES="worker1"
# but you can also start multiple and configure settings
# for each in CELERYD_OPTS (see `celery multi --help` for examples):
#CELERYD_NODES="worker1 worker2 worker3"
# alternatively, you can specify the number of nodes to start:
#CELERYD_NODES=10
# Absolute or relative path to the 'celery' command:
# CELERY_BIN="/usr/local/bin/celery"
CELERY_BIN="/home/<user>/.virtualenvs/<virtualenv_name>/bin/celery"
# App instance to use
# comment out this line if you don't use an app
# CELERY_APP="proj"
# or fully qualified:
CELERY_APP="<project_name>.settings:app"
# Where to chdir at start.
CELERYD_CHDIR="/home/<user>/projects/<project_name>/"
# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
# %N will be replaced with the first part of 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.
# You need to create this user manually (or you can choose
# a user/group combination that already exists, e.g. nobody).
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1
我已使用该过程使用this文章创建芹菜用户。
我的项目是一个Django项目,我已在documentation和stackoverflow answer中指定的芹菜设置文件中指定了DJANGO_SETTINGS_MODULE
环境变量。
我是否需要更改init.d脚本中的任何内容或需要在celery配置文件中添加的任何其他内容...是否是我创建的芹菜用户,因为我也尝试过指定
CELERYD_USER = ""
CELERYD_GROUP = ""
同时还将DEFAULT_USER
值更改为&#34;&#34;在init.d
脚本中。
问题仍然存在。
在其中一个答案中,它还被告知项目中可能存在一些错误......但由于我的测试用例,我没有发现任何此类错误。
PS:我已经指定,并且出于隐私问题 他们有自己的原名。
答案 0 :(得分:4)
我的ubuntu服务器上出现了类似的问题[ERROR 2] FILE NOT FOUND。事实证明,即使您在celery示例文档中完成的celery.service配置中进行了设置,也不会自动创建/ var / run / celery /目录。您可以创建该目录并手动授予权限,但是重新启动服务器后,该目录将消失,因为该目录位于临时目录中。 在了解了Linux系统的运行方式后,我发现您只需要在/etc/tmpfiles.d/celery.conf中用以下几行创建配置文件
d /var/run/celery 0755 admin admin -
d /var/log/celery 0755 admin admin -
注意:您将需要使用'admin'以外的其他user:group,也可以专门创建一个名为admin的user:group来处理您的芹菜过程。
您可以通过输入
了解有关此配置及其操作方式的更多信息。man tmpfiles.d
答案 1 :(得分:1)
我有问题并且刚才解决了,谢天谢地!对我来说这是一个许可问题。我原以为它在/ var / run / celery或/ var / log / celery中,但事实证明这是我设置Django登录的日志文件。出于某种原因,芹菜想要写入该文件(我必须查看),但没有许可。我在verbose命令中找到了错误并跳过了守护步骤:
# C_FAKEFORK=1 sh -x /etc/init.d/celeryd start
这是一个旧线程但如果你们中的任何人遇到这个错误,我希望这可能会有所帮助!
祝你好运!答案 2 :(得分:0)
我看到了同样的问题,结果证明是权限问题。 确保将芹菜运行的用户/组设置为拥有/ var / log / celery /和/ var / run / celery / folders。 请看这里的分步示例: Daemonizing celery