У меня следующая структура папок

git_repo_main
   └───my_sub_project
       │   celery_app.py
       │   __init__.py
       │
       ├───calcs
       │   │   math_funcs.py  -> from my_sub_project.celery_app import app
       │   │   __init__.py
       │
       ├───piplines
           │   run_math_pipeline.py -> from my_sub_project.calcs import math_funcs
           │   __init__.py

Где celery_app.py выглядит так:

from celery import Celery

app = Celery('my_sub_project',
             broker='amqp://guest@localhost//',
             backend='amqp://guest@localhost//',
             include=['calculations.math_funcs']
             )

У меня также есть код в моем репо

При запуске сельдерея с помощью этой команды: celery -A celery_app worker -l info -P gevent, я получаю следующую ошибку

ModuleNotFoundError: No module named 'my_sub_project'

Полная ошибка stack для импорта app

Какое было бы решение?


Я прочитал документацию по именованию и импорт, однако меняются импорт для включения git_repo_main вызывает ту же ошибку, плюс это мой исходный корень, что противоречит структуре импорта по умолчанию большинства IDE.

Я также нашел аналогичный вопрос, однако, похоже, он решает проблему обнаружения задач. а не импорт app и задач.

Примечание : я не использую django

0
moshevi 17 Окт 2019 в 14:54
Что, если вы используете app = Celery('.', …)?
 – 
mkrieger1
17 Окт 2019 в 15:01
Он производит ту же ошибку
 – 
moshevi
17 Окт 2019 в 15:03
Что, если celery_app.py переместится на один уровень вверх до git_repo_main?
 – 
mkrieger1
17 Окт 2019 в 15:48
Не могли бы вы включить полную трассировку стека сообщения об ошибке?
 – 
mkrieger1
17 Окт 2019 в 15:48
Похоже, это решает ошибку импорта приложения, однако теперь, когда я запускаю run_math_pipeline, задачи в math_funcs не регистрируются.
 – 
moshevi
17 Окт 2019 в 15:54

1 ответ

Запустите рабочий Celery в каталоге git_repo_main с указанным PYTHONPATH. Что-то вроде: PYTHONPATH=. celery -A celery_app.app worker -l info -P gevent

0
DejanLekic 17 Окт 2019 в 19:49