Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django芹菜节拍的权限被拒绝错误--调度程序标志_Django_Docker_Celery_Celerybeat_Django Celery Beat - Fatal编程技术网

django芹菜节拍的权限被拒绝错误--调度程序标志

django芹菜节拍的权限被拒绝错误--调度程序标志,django,docker,celery,celerybeat,django-celery-beat,Django,Docker,Celery,Celerybeat,Django Celery Beat,我正在Docker容器中运行Django、芹菜和RabbitMQ 它的配置和运行都很好,但是当我试图安装django芹菜beat时,我在初始化服务时遇到了问题 具体而言,此命令: celery -A project beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler 导致此错误的原因: celery.platforms.LockFailed: [Errno 13] Permission denied:

我正在Docker容器中运行Django、芹菜和RabbitMQ

它的配置和运行都很好,但是当我试图安装
django芹菜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'
查看原因/解决方案时,当默认计划程序(
Cellery.beat.PersistentScheduler
)尝试跟踪本地搁置数据库文件中的上次运行时间,并且没有写访问权限时,会出现“权限被拒绝”错误

但是,我正在使用
django芹菜beat
并应用
--scheduler
标志来使用
django_芹菜beat.schedulers
服务,该服务应将计划存储在django数据库中,因此不需要写访问

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

celerybeat()创建一个pid文件,在其中存储进程id

--pidfile
用于存储进程pid的文件。默认为celerybeat.pid

如果此文件已存在且pid为空,则程序不会启动 还活着


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

谢谢,我想如果您将调度程序更改为
django_celery_beat。调度程序:DatabaseScheduler
那么它不会创建PID,因为它使用数据库写入运行时间?我是否误解了PID的用途?PID是进程名,PID文件不允许运行多次相同的芹菜节拍(假设您运行命令2次),这会导致任务倍增。与实际任务运行或任务调度无关。谢谢,所以在docker环境中,我认为最佳实践是使用pidfile?如果它位于
/usr/src/app/celerybeat.pid
中,它不应该已经具有写访问权限吗?如果文件以前不存在,我不确定在芹菜被证实后如何修改权限。您可能希望授予芹菜文件夹的写入权限,并将该文件夹添加为--pidfile