Тема: Проблема с доступом Celery worker к Python egg. Как это исправить?
Здравствуйте, коллеги!
Столкнулся с проблемой при работе с Celery worker, который не может получить доступ к Python egg. Вот в чем суть:
Я использую scrapyd-deploy
для деплоя кода на продакшн сервер. Все egg-файлы хранятся в директории /home/my-projects/
, и структура каталогов выглядит следующим образом:
/home/my-projects/eggs/project1/1234567890.egg
/home/my-projects/eggs/project2/82391t2352.egg
/home/my-projects/eggs/project3/6543267433.egg
/home/my-projects/eggs/project4/9674626232.egg
и т.д.
Для scrapyd
сервис работает корректно, и доступ к этим egg обеспечивает без проблем:
[Unit]
Description=Scrapyd service
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/my-projects
ExecStart=/usr/local/bin/scrapyd
[Install]
WantedBy=multi-user.target
Однако, когда я пытаюсь аналогичным образом настроить celery worker, используя /lib/systemd/system/celery_project1.service
, возникают проблемы:
[Unit]
Description=Celery Worker for Project 1
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/my-projects
#Environment="PYTHONPATH=/home/my-projects/eggs"
Environment="PYTHONPATH=/home/my-projects"
ExecStart=/usr/local/bin/celery -A project1.celery_app worker --loglevel=info --concurrency=10
[Install]
WantedBy=multi-user.target
После перезагрузки демона и рестарта сервиса, при выполнении systemctl status celery_project1
, появляется ошибка:
Модуль project1.celery_app не найден.
Celery worker не может получить доступ к приложению внутри egg. Был испытан следующий способ: я извлек содержимое egg (unzip 1234567890.egg -d temp
) и из новой директории temp
успешно запустил команду:
celery -A project1.celery_app worker --loglevel=info --concurrency=10
Этот способ работает, однако вручную разархивировать egg и запускать worker неудобно. Кажется, проблема в недоступности приложения внутри egg для celery worker. Возможно, кто-то сталкивался с подобной проблемой? Как успешно настроить celery worker для работы непосредственно с egg, без необходимости извлечения его содержимого?
Заранее благодарен за ваши советы и помощь!