【问题标题】:celery daemon - permission denied on log file芹菜守护进程 - 日志文件的权限被拒绝
【发布时间】:2014-05-09 07:55:29
【问题描述】:

我一直致力于将我的 celery 任务设置为守护进程,以便按计划处理数据。

我一直在关注the docs 以设置我的守护程序,但遇到了让我难过的日志文件权限错误。

以下是我在 Digital Ocean 上的 ubuntu 机器上设置的配置

/etc/default/celeryd

# here we have a single node
CELERYD_NODES="w1"

CELERY_BIN = "/mix_daemon/venv/bin/celery"
CELERYD_CHDIR="/mix_daemon/"

CELERYD_OPTS="-A tasks worker --loglevel=info --beat"

# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERY_CREATE_RUNDIR=0
CELERY_CREATE_LOGDIR=0

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

但是,当我跑步时

sh -x /etc/init.d/celeryd start

我收到以下错误消息:

celery multi v3.1.7 (Cipater)
> Starting nodes...
> celery@mix: OK
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 168, in <module> main()
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 165, in main
detached_celeryd(app).execute_from_commandline()
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 160, in execute_from_commandline
**vars(options)
File "/home/john/mix_daemon/venv/lib/python2.7/site-packages/celery/bin/celeryd_detach.py", line 42, in detach
with detached(logfile, pidfile, uid, gid, umask, working_directory, fake):
File "/home/john/mix_daemon/venv/local/lib/python2.7/site-packages/celery/platforms.py", line 314, in open
self.after_chdir()
File "/home/john/mix_daemon/venv/local/lib/python2.7/site-packages/celery/platforms.py", line 384, in after_chdir_do
logfile and open(logfile, 'a').close()
IOError: [Errno 13] Permission denied: '/var/log/celery/celery.log'
+ sleep 5
+ exit 0

我查看了这条错误消息,并从 redmine 项目中看到了 this answer。所以我尝试了以下尝试允许芹菜工人写入日志文件:

$ sudo mkdir -p -m 2755 /var/log/celery
$ sudo chown celery:celery /var/log/celery

但是当我尝试启动守护进程时,同样的错误仍然存​​在。

我是一个芹菜菜鸟,任何对此的帮助将不胜感激!

【问题讨论】:

标签: python celery daemon


【解决方案1】:

对我有帮助:

sudo chown -R myuser:root /var/run/celery/
sudo chown -R myuser:root /var/log/celery/

【讨论】:

【解决方案2】:

根据文档:

init脚本只能由root使用,shell配置文件也必须为root拥有”

所以,你需要运行:

sudo chown root:root /etc/default/celeryd

sudo /etc/init.d/celeryd start

顺便说一句,你的 celeryd 配置文件中有无效的语法:

CELERY_BIN = "/mix_daemon/venv/bin/celery"

“=”运算符不允许有空格,正确的是:

CELERY_BIN="/mix_daemon/venv/bin/celery"

还要检查,您的 bin 是否位于 /mix_daemon 而不是 /home//mix_daemon

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2011-09-26
    • 2015-08-02
    • 2013-03-19
    • 2018-07-08
    相关资源
    最近更新 更多