我的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'
知道如何解决这个问题吗?
答案 0 :(得分:14)
问题是你没有在配置文件中指定任何目录,默认目录是'/'(root),你的用户没有权限写。
将用户设置为root可以解决您的问题,因为现在您有权写入'/',但这可能不是最佳解决方案。您可以通过多种方式解决此问题:
在配置中添加目录变量,并提供用户有权写入的路径。
directory=<path>
为您用于启动celery的celery命令提供pidfile参数。确保您对为pid文件指定的路径具有写入权限。
command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO --pidfile=/tmp/celerybeat-myapp.pid
答案 1 :(得分: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 文件的文件夹的权限。
答案 2 :(得分:0)
我通过设置user = root来解决我的问题,但我认为这是不好的方式......
答案 3 :(得分:0)
我遇到了类似的问题。它通过更改2个设置进行了修复:
某些文档“用户=没有人”中提供的默认值似乎会导致celerybeat.conf出现额外的权限错误(尽管不是celery.conf中)。