У меня есть проект django, который отлично работает с runserver, расположенным в:
D:\EverTabs\work\evertabs-website\src\evertabs\
Мои файлы settings.py и manage.py находятся по указанному выше пути.
Я открываю доверенныйcmd shell, перейдите в этот каталог и запустите manage.py celeryd
, я получаю исключение со следующей ошибкой:
ImportError: Could not import settings 'evertabs.settings' (Is it on sys.path?): No module named evertabs.settings
справедливо, достаточно.Гугл и StackOverflow на помощь и я нахожу ответ.Мне нужно предоставить --settings=settings
команде.Странно, поскольку runserver не нуждается в --settings=settings
, но такова жизнь.Я готов пойти на компромисс.Я продолжаю получать сообщение об ошибке:
Traceback (most recent call last):
File "C:\Progra~1\Python26\lib\multiprocessing\process.py", line 231, in _bootstrap
self.run()
File "C:\Progra~1\Python26\lib\multiprocessing\process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\concurrency\processes\pool.py", line 173, in worker
initializer(*initargs)
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\worker\__init__.py", line 64, in process_initializer
app.loader.init_worker()
File "c:\program files\python26\lib\site-packages\celery-2.4.6-py2.6.egg\celery\loaders\base.py", line 100, in init_worker
self.on_worker_init()
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 92, in on_worker_init
autodiscover()
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 114, in autodiscover
for app in settings.INSTALLED_APPS])
File "c:\program files\python26\lib\site-packages\django_celery-2.4.2-py2.6.egg\djcelery\loaders.py", line 124, in find_related_module
app_path = importlib.import_module(app).__path__
File "build\bdist.win32\egg\importlib\__init__.py", line 37, in import_module
ImportError: No module named evertabs
Поэтому я энергично почесываю голову и решаю, что, может быть, если я покормлю этого парня другим питон-трактом, он будет хорошо расставлен.Моя следующая попытка:
manage.py celeryd --pythonpath=D:\EverTabs\work\evertabs-website\src\
Теперь мы куда-то добираемся!Нет ошибокОднако мой файл celeryconfig.py, который находится в том же каталоге, что и settings.py, не обрабатывается.Ни одна из моих задач не загружена.Я зашел так далеко, что поместил синтаксическую ошибку в celeryconfg.py, чтобы доказать себе, что она не загружается.
Следующим шагом я стал использовать manage.py из django 1.4.Этот manage.py помещается в D:\EverTabs\work\evertabs-website\src\
вместо D:\EverTabs\work\evertabs-website\src\evertabs\
.На этом этапе я могу выполнить celeryd с простым синтаксисом и не добавлять его в pythonpath.Тем не менее, мой celeryconfig.py остался нетронутым:
D:\EverTabs\work\evertabs-website\src>manage.py celeryd
Дальнейшие исследования показывают, что если я добавлю файл tasks.py в директорию верхнего уровня 9, где находится файл setting.py).Сельдерей автоматически обнаружит их.Это сработало.тем не менее, celeryconfig.py по-прежнему не обрабатывается, поэтому я не могу выполнить более сложную настройку.Пока это не проблема, так как мои задачи наконец-то найдены.Однако меня очень беспокоит, что celeryconfig.py не обрабатывается.
Сейчас меня осенило, что, может быть, современный сельдерей не ищет celeryconfig.py в конце концов.Я могу просто поместить эти настройки в мои settings.py, и сельдерей подберет их.Вещи начинают хорошо выглядеть.