Ошибка отказа в разрешении с django -celery-beat несмотря на флаг --schedulers - PullRequest
0 голосов
/ 18 апреля 2020

Я использую Django, Celery и RabbitMQ в контейнере Docker.

Все настроено и работает нормально, однако, когда я пытаюсь установить django-celery-beat У меня проблема с инициализацией service.

В частности, эта команда:

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

Приводит к этой ошибке:

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

При рассмотрении причин / решений появляется ошибка отказа в разрешении когда планировщик по умолчанию (celery.beat.PersistentScheduler) пытается отследить последнее время выполнения в файле базы данных локальной полки и не имеет доступа для записи.

Однако я использую django-celery-beat и применяю --scheduler флаг использования службы django_celery_beat.schedulers, которая должна хранить расписание в базе данных Django и, следовательно, не требовать доступа для записи.

Что еще может быть причиной этой проблемы? / Как я могу отладить это дальше?

1 Ответ

1 голос
/ 18 апреля 2020

celerybeat ( celery.bin.beat ) создает файл pid, в котором хранится идентификатор процесса

--pidfile

Файл, используемый для хранения pid процесса. По умолчанию celerybeat.pid.

Программа не запустится, если этот файл уже существует, а pid еще жив.

Вы можете оставить --pidfile= пустым в вашей команде но будьте осторожны, тогда он не будет знать, если активен более одного процесса сельдерея

...