django-celery работает в разработке, не работает в wsgi: как отладить? - PullRequest
2 голосов
/ 06 декабря 2011

Я использую очередь задач django celery, и она отлично работает в разработке, но совсем не в производстве wsgi. Еще более неприятно, что использовал для работы на производстве, но я как-то сломал его.

«статус sudo rabbitmqctl» говорит мне, что сервер rabbitmq работает. В django также все выглядит замечательно: объекты создаются и без проблем направляются в диспетчер задач. Но тогда их статус просто остается «в очереди» на неопределенное время. Так, как я написал свой код, они должны переключиться на «ошибка» или «готово», как только что-нибудь вернется из задачи сельдерея. Поэтому я предполагаю, что с очередью что-то не так.

Два связанных вопроса:

  • Есть идеи, в чем может быть проблема?
  • Как мне отладить сельдерей? Вне команды manage.py celeryd, я не уверен, как заглянуть во внутреннюю работу. Есть ли файлы журналов или что-то, что я могу использовать?

Спасибо!

PS - Я видел этот вопрос , но он, похоже, хочет запустить сельдерей из manage.py, а не wsgi.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

После долгих поисков самый полный ответ, который я нашел на этот вопрос, здесь .Эти направления подчеркивают скудные официальные указания по демонизации celeryd .Я скопирую суть здесь, но вы должны перейти по ссылке, потому что Майкл объяснил некоторые детали более подробно.

Основная идея заключается в том, что вам нужны сценарии в трех местах:

  1. / etc / init.d / celeryd
  2. / etc / default / celeryd
  3. myApp / settings.py

Settings.py выглядит одинаковокак в режиме разработки.Так что, если он уже настроен, есть четыре шага для перехода к производству:

  1. Загрузите скрипт демона, поскольку он не включен в установку: https://github.com/celery/celery/tree/3.0/extra/generic-init.d/
  2. Поместите его в /etc / init.d / celeryd
  3. Создайте файл в / etc / default / celeryd и поместите в него переменные: http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#example-django-configuration
  4. Запустите скрипт

Это решило мою проблему.

1 голос
/ 10 декабря 2011

Я думаю, что причина, по которой вы не получаете никакого ответа от сельдерея, в том, что сервер celeryd может не работать.Вы можете узнать об этом, выполнив ps -ef |grep celeryd.Чтобы выяснить, в чем заключается ошибка при попытке запустить celeryd, вы можете сделать следующее:

В вашем файле settings.py вы можете указать путь к файлу журнала сельдерея CELERYD_LOG_FILE = <Path to the log file>Запустив сервер Celeryd, вы можете указать уровень manage.py celeryd -l DEBUG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...