尽管有 --schedulers 标志,但 django-celery-beat 的权限被拒绝错误

Permission denied error with django-celery-beat despite --schedulers flag

我在 Docker 容器中 运行 安装 Django、Celery 和 RabbitMQ。

一切都配置得很好 运行ning,但是当我尝试安装时 django-celery-beat 我在初始化服务时遇到问题。

具体来说,这个命令:

celery -A project beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

导致此错误:

celery.platforms.LockFailed: [Errno 13] Permission denied: '/usr/src/app/celerybeat.pid'

查看 causes/solutions 时,当默认调度程序 (celery.beat.PersistentScheduler) 尝试跟踪本地搁置数据库文件中的最后 运行 次时,似乎会出现权限被拒绝的错误并且没有写入权限。

但是,我正在使用 django-celery-beat 并应用 --scheduler 标志来使用 django_celery_beat.schedulers 服务,该服务应将计划存储在 Django 数据库中,因此不需要写权限。

还有什么可能导致此问题? / 我该如何进一步调试?

celerybeat (celery.bin.beat) 创建一个 pid 文件,它存储进程 id

--pidfile

File used to store the process pid. Defaults to celerybeat.pid.

The program won’t start if this file already exists and the pid is still alive.

您可以在命令中将 --pidfile= 留空,但请注意,它不会知道是否有多个 celerybeat 进程处于活动状态