自从过去几天以来,我一直在为这个问题绞尽脑汁,我在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:no pidfiles found错误。
我知道这个问题是重复的,但在这个问题上我仍然同意,因为我已经尝试了所有的问题,但仍然无法解决。
我正在亚马逊网络服务上部署这个脚本。我正在使用虚拟环境。
init.d
脚本是直接从这里获取的,然后我给了它所需的权限。
这是我的配置文件:
# 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
我已经使用这个过程创建了使用本文的芹菜用户。
我的项目是一个Django项目,我已经在芹菜设置文件中指定了DJANGO_SETTINGS_MODULE
环境变量,如文档和stackoverflow答案中所指定的。
我是否需要更改init.d脚本中的任何内容,或者需要添加到芹菜配置文件中的任何其他内容。。。是关于我创建的芹菜用户吗,因为我也尝试指定
CELERYD_USER = ""
CELERYD_GROUP = ""
同时还在init.d
脚本中将DEFAULT_USER
值更改为"。尽管如此,这个问题仍然存在。
在其中一个答案中,它还被告知该项目中可能存在一些错误。。。但由于我的测试用例,我没有发现任何这样的错误。
PS:我已经指定,并针对隐私问题他们有自己的原名。
我在ubuntu服务器上遇到了类似的问题[错误2]找不到文件。事实证明,即使在芹菜示例文档中的celery.service配置中进行了设置,/var/run/ccelene/Directories也不会自动创建。您可以创建该目录,并手动授予正确的权限,但一旦重新启动服务器,该目录就会消失,因为它位于临时目录中。在阅读了一些关于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
我刚刚解决了这个问题,感谢上帝!对我来说,这是一个许可问题。我本以为它在/var/run/celecer或/var/log/celecere中,但事实证明它是我为Django日志设置的日志文件。出于某种原因,西芹想写那个文件(我必须调查一下),但没有得到许可。我发现了verbose命令的错误,并跳过守护进程步骤:
# C_FAKEFORK=1 sh -x /etc/init.d/celeryd start
这是一个旧线程,但如果你们中的任何人遇到这个错误,我希望这可能会有所帮助!
祝你好运!
我看到了同样的问题,结果是权限问题。请确保将运行芹菜的用户/组设置为拥有/var/log/celece/和/var/run/celecer/文件夹。请参阅此处以获取分步示例:对芹菜进行消毒