14

我的 celerybeat.conf

[program:celerybeat]
command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO
environment=PYTHONPATH=/path/app/env/bin

user=nobody
numprocs=1
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998

当我启动主管时,我收到一个错误:

pidfile_fd = os.open(self.path, PIDFILE_FLAGS, PIDFILE_MODE)
celery.platforms.LockFailed: [Errno 13] Permission denied: '/celerybeat.pid'

知道如何解决这个问题吗?

4

4 回答 4

16

问题是您没有在配置文件中指定任何目录,默认目录是“/”(root),您的用户没有写入权限。

将用户设置为 root 解决了您的问题,因为现在您有权写入“/”,但它可能不是最佳解决方案。有多种方法可以解决这个问题,包括:

  1. 在配置中添加目录变量并提供您的用户有权写入的路径。

    directory=<path>
    
  2. 为您用来启动 celery 的 celery 命令提供一个 pidfile 参数。确保您对为 pidfile 指定的路径具有写入权限。

    command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO --pidfile=/tmp/celerybeat-myapp.pid
    
于 2013-11-26T00:05:52.833 回答
1

这是我的 Celere beat 的(工作)版本:

[program:celery_periodic]
command=<venv_path>/bin/python <path>/manage.py celery worker --loglevel=info -c 1 -E -B -Q celery_periodic -f <log_folder>/celery_periodic.log -n periodic_worker
directory=<path>
user=<some_user>
group=<some_user>
autostart=true
autorestart=true
redirect_stderr=True
daemon = False
debug = False
stdout_logfile = NONE
stderr_logfile = NONE
loglevel = "info"

可能这有帮助。

还要检查您创建pid文件的文件夹的权限。

于 2013-09-03T07:45:38.233 回答
0

我通过设置 user=root 解决了我的问题,但我认为这是不好的方法......

于 2013-09-02T20:55:15.857 回答
0

我遇到了类似的问题。通过更改 2 设置已修复:

  1. 如上所述:添加--pidfile=/tmp/celerybeat-myapp.pid
  2. user = "一个实际的非 root 用户"

某些文档中提供的默认值“user = nobody”似乎会导致 celerybeat.conf 出现额外的权限错误(虽然不在 celery.conf 中)。

于 2019-09-03T22:37:34.687 回答