权限被拒绝:'/code/celerybeat.pid'

pau*_*aul 4 django celery docker

我无法使用 Docker 运行 Celery beat。

celerybeat_1    | celery.platforms.LockFailed: [Errno 13] Permission 
denied: '/code/celerybeat.pid'
Run Code Online (Sandbox Code Playgroud)

码头服务:

celerybeat:
 <<: *django
 depends_on:
  - postgres
  - redis
 command: /start-celerybeat.sh
Run Code Online (Sandbox Code Playgroud)

开始 celerybeat.sh

#!/bin/sh

set -o errexit
set -o nounset

celery -A my_project.taskapp beat -l info --loglevel=debug --scheduler django_celery_beat.schedulers:DatabaseScheduler
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Shi*_*sei 11

删除那个文件。然后,修改start-celerybeat.sh的最后一行,添加--pidfile /tmp/celerybeat.pid到最后

  • 只是为了建立在这个答案的基础上。Celerybeat 通常生成 2 个文件(一个 pid 文件和一个 celerybeat-schedule 或本地数据库文件)。您可能需要明确说明您希望这些文件存放在哪里。对于 pid 文件,请使用上述建议:--pidfile /tmp/celerybeat.pid,对于 celerybeat-schedule 文件,请使用 -s /tmp/celerybeat-schedule。这是相关文档:https://celery.readthedocs.io/en/latest/userguide/periodic-tasks.html#starting-the-scheduler (6认同)