Python Billiard не может найти модуль проекта при перезапуске рабочего процесса Celery

Работает Python 2.7, Celery 3.1.23, Billiard 3.3.0.23.

У меня Celery workers падает при любом отслеживании стека. Проверка рабочих с помощью celery worker из оболочки дает такой стек:

[2022-01-03 03:39:17,822: ERROR/MainProcess] Unrecoverable error: ImportError('No module named <my project>',) Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/celery/worker/__init__.py", line 206, in start self.blueprint.start(self) File "/usr/local/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start step.start(parent) File "/usr/local/lib/python2.7/site-packages/celery/bootsteps.py", line 374, in start return self.obj.start() File "/usr/local/lib/python2.7/site-packages/celery/concurrency/base.py", line 131, in start self.on_start() File "/usr/local/lib/python2.7/site-packages/celery/concurrency/prefork.py", line 119, in on_start **self.options) File "/usr/local/lib/python2.7/site-packages/celery/concurrency/asynpool.py", line 401, in __init__ super(AsynPool, self).__init__(processes, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/billiard/pool.py", line 972, in __init__ self._create_worker_process(i) File "/usr/local/lib/python2.7/site-packages/celery/concurrency/asynpool.py", line 415, in _create_worker_process return super(AsynPool, self)._create_worker_process(i) File "/usr/local/lib/python2.7/site-packages/billiard/pool.py", line 1068, in _create_worker_process w.start() File "/usr/local/lib/python2.7/site-packages/billiard/process.py", line 137, in start self._popen = Popen(self) File "/usr/local/lib/python2.7/site-packages/billiard/forking.py", line 91, in __init__ _Django_old_layout_hack__save() File "/usr/local/lib/python2.7/site-packages/billiard/forking.py", line 379, in _Django_old_layout_hack__save project = __import__(project_name) ImportError: No module named <my_project>

Похоже, что Billiard вообще не может загрузить модуль проекта. Однако, вы можете запустить оболочку на celery worker, вызвав celery shell, и запуск forking._Django_old_layout_hack__save() работает просто отлично.

Вернуться на верх