【问题标题】:Permission denied: '/code/celerybeat.pid'权限被拒绝:'/code/celerybeat.pid'
【发布时间】:2019-06-25 01:25:07
【问题描述】:

我无法使用 Docker 运行 Celery beat。

celerybeat_1    | celery.platforms.LockFailed: [Errno 13] Permission 
denied: '/code/celerybeat.pid'

码头服务:

celerybeat:
 <<: *django
 depends_on:
  - postgres
  - redis
 command: /start-celerybeat.sh

start-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

我该如何解决这个问题?

【问题讨论】:

    标签: django docker celery


    【解决方案1】:

    删除该文件。然后,修改start-celerybeat.sh的最后一行,在末尾添加--pidfile /tmp/celerybeat.pid

    【讨论】:

    • 只是为了建立这个答案。 Celery beat 通常产生 2 个文件(一个 pid 文件和一个 celerybeat-schedule 或本地数据库文件)。您可能需要明确说明您希望它们居住在哪里。对于 pid 文件,使用上述建议:--pidfile /tmp/celerybeat.pid,对于 celerybeat-schedule 文件,使用 -s /tmp/celerybeat-schedule。以下是相关文档:celery.readthedocs.io/en/latest/userguide/…
    • @TaylorD 您应该将其发布为答案(而不是评论)。它解决了我的问题。谢谢!