Диспетчер Dotcloud показывает ошибку, но процесс запущен
Моя установка dotcloud (django-celery with rabbitmq) работала неделю назад - процессы запускались нормально, а журналы были чистыми. Тем не менее, я недавно повторил (без обновления какого-либо кода), и теперь журналы говорят, что процессы не запускаются, даже если кажется, что они работают.
Журнал супервизор
dotcloud@hack-default-www-0:/var/log/supervisor$ more supervisord.log 2012-06-03 10:51:51 836 CRIT Установите uid для пользователя 1000 2012-06-03 10: 51: 51 836 ПРЕДУПРЕЖДЕНИЕ Включено дополнительно файл "/etc/supervisor/conf.d/uwsgi.c onf" во время синтаксического анализа 2012-06-03 10:51:51,836 ПРЕДУПРЕЖДЕНИЕ Включен дополнительный файл "/home/dotcloud/current/supervi sord.conf" во время синтаксического анализа 2012-06-03 10:51:51,938 Инициализирован интерфейс супервизора RPC интерфейса INFO 2012-06-03 10:51:51,938 WARN cElementTree не установлен, используется более медленный синтаксический анализатор XML для XML-RPC 2012-06-03 10:51:51,938 CRIT Server 'unix_http_server'работает без какой-либо проверки подлинности HTTP 2012-06-03 10:51:51,946 INFO демонизация процесса супервизора 2012-06-03 10:51:51,947 Супервизор INFO запущен с pid 144 2012-06-03 10:51:53,128 INFO порождал: 'celerycam' с pid 159 2012-06-03 10:51:53,133 порождал информацию: 'apnsd' с pid 161 2012-06-03 10:51:53,148 INFO порождал: 'djcelery' с pid 164 2012-06-03 10:51:53,168 ИНФОРМАЦИЯ порождена: 'uwsgi' с pid 167 2012-06-03 10:51:53,245 ИНФО завершена: djcelery (статус выхода 1; не ожидается) 2012-06-03 10:51:53,247 Информация вышла: celerycam (состояние выхода 1; не ожидается) 2012-06-03 10:51:54,698 Информация появилась: 'celerycam' с pid 176 2012-06-03 10:51:54,698 INFO успешно: apnsd перешел в состояние RUNNING, процесс запущен более чем на 1 секунду (startsecs) 2012-06-03 10:51:54,705 INFO породил: 'djcelery' с pid 177 2012-06-03 10:51:54,706 INFO успешно: uwsgi вошел в состояние RUNNING, процесс запущен более чем на 1 секунду (startsecs) 2012-06-03 10:51:54,731 INFO завершено: djcelery (состояние выхода 1; не ожидается) 2012-06-03 10:51:54,754 ИНФО завершено: celerycam (состояние выхода 1; не ожидается) 2012-06-03 10:51:56,760 ИНФО появилось: 'celerycam' с pid 178 2012-06-03 10:51:56,765 ИНФОРМАЦИЯ появилось: 'djcelery' с pid 179 2012-06-03 10:51:56 790 INFO завершено: celerycam (состояние выхода 1; не ожидается) 2012-06-03 10: 51: 56 791 INFO завершено: djcelery (состояние выхода 1; не ожидается)) 2012-06-03 10:51:59,798 ИНФОРМАЦИЯ порождена: 'celerycam' с pid 180 2012-06-03 10:52:00,538 ИНФОРМАЦИЯ порождена: 'djcelery' with pid 181 2012-06-03 10:52:00,565 ИНФОРМАЦИЯ выход: celerycam (состояние выхода 1; не ожидается) 2012-06-03 10:52:00,571 ИНФОРМАЦИЯ сдана: celerycam перешел в ФАКТИЧЕСКОЕ состояние, слишком много попыток повторного выполнения слишком быстро 2012-06-03 10: 52: 00,573 ИНФО завершено: djcelery (состояние выхода 1; не ожидается) 2012-06-03 10: 52: 01,575 ИНФОРМАЦИЯ сдана: djcelery перешел в состояние FATAL, слишком много попыток запускается слишком быстро dotcloud @ hack-default-www-0: / var / log / supervisor $
Журнал ошибок:
dotcloud @ hack-default-www-0: / var / log / supervisor $ more djcelery_error.log Traceback (последний вызов был последним): Файл "hack/manage.py", строка 2, в из django.core.management импорт execute_manager Ошибка импорта: нет модуля с именем django.core.management Traceback (последний вызов был последним): Файл "hack/manage.py", строка 2, в из django.core.management импорт execute_manager Ошибка импорта: нет модуля с именем django.core.management Traceback (последний вызов был последним): Файл "hack/manage.py", строка 2, в из django.core.management импорт execute_manager Ошибка импорта: нет модуля с именем django.core.management Traceback (последний вызов был последним): Файл "hack/manage.py", строка 2, в из django.core.management импорт execute_manager Ошибка импорта: нет модуля с именем django.core.management dotcloud@ взломать дефолтный-WWW-0: / вар / Журнал / супервайзер $
Statusctrl показывает, что некоторые процессы запущены, но pids разные. Кроме того, функциональность сельдерея, кажется, работает нормально. Сообщения обрабатываются, и я вижу, что сообщения обрабатываются в интерфейсе администратора django (запущена камера dj celery).
# supervisorctl status APNSD RUNNING PID 225, время безотказной работы 0:00:44 celerycam RUNNING pid 224, время безотказной работы 0:00:44 djcelery RUNNING pid 226, время безотказной работы 0:00:44
Файл Supervisord.conf:
[Программа:djcelery] каталог = /home/dotcloud/current/ command = python hack/manage.py celeryd -E -l информация -c 2 stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log [Программа:celerycam] каталог = / home / dotcloud / current / command = python hack / manage.py celerycam stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log
http://jefurii.cafejosti.net/blog/2011/01/26/celery-in-virtualenv-with-supervisord/ говорит, что проблема может быть в том, что используемый питон неправильный, поэтому я явно указал питон в файле супервизора. Теперь это работает, но не объясняет, что я вижу выше и почему мне пришлось изменить свою конфигурацию, когда она работала нормально на прошлой неделе.
Кроме того, не все пиды выстраиваются в ряд:
2012-06-03 11: 19: 03,045 CRIT-сервер 'unix_http_server' работает без HTTP проверка подлинности 2012-06-03 11:19:03,051 INFO, демонизирующая процесс надзора 2012-06-03 11:19:03,052 INFO supervisord начался с pid 144 2012-06-03 11:19:04,061 ИНФОРМАЦИЯ породила 'celerycam' с pid 151 2012-06-03 11: 19: 04,066 ИНФОРМАЦИЯ порождена: 'apnsd' с pid 153 2012-06-03 11: 19: 04,085 Появилось INFO: 'djcelery' с pid 155 2012-06-03 11:19:04,104 ИНФОРМАЦИЯ породила: 'uwsgi' с pid 156 2012-06-03 11:19:05,271 ИНФОРМАЦИЯ об успешном выполнении: камера celerycam перешла в состояние RUNNING, процесс h в течение> 1 секунды (startsecs) 2012-06-03 11:19:05,271 ИНФОРМАЦИЯ успешно: apnsd перешел в состояние RUNNING, процесс имеет более чем на 1 секунду (startsecs) 2012-06-03 11:19:05,271 ИНФОРМАЦИЯ об успехе: djcelery перешел в состояние RUNNING, процесс ha s просидел> 1 секунды (startsecs) 2012-06-03 11:19:05,271 ИНФОРМАЦИЯ успешно: uwsgi вошел в состояние ВЫПОЛНЕНИЯ, процесс имеет более чем на 1 секунду (startsecs)
статус показывает, что кулачки сельдерея не выстраиваются в ряд:
# supervisorctl status apnsd RUNNING pid 153, время безотказной работы 0:06:17 celerycam RUNNING pid 150, время безотказной работы 0:06:17 djcelery RUNNING pid 155, время безотказной работы 0:06:17
1 ответ
Мое первое предположение заключается в том, что вы используете неправильный двоичный файл Python (system
питон вместо virtualenv
Python), и это вызывает эту ошибку (ниже), потому что это system
В двоичном файле Python этот пакет не установлен.
Traceback (most recent call last):
File "hack/manage.py", line 2, in
from django.core.management import execute_manager
ImportError: No module named django.core.management
Вы должны изменить свой supervisord.conf на следующий, чтобы убедиться, что вы указываете на правильную версию Python.
[program:djcelery]
directory = /home/dotcloud/current/
command = /home/dotcloud/env/bin/python hack/manage.py celeryd -E -l info -c 2
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
[program:celerycam]
directory = /home/dotcloud/current/
command = /home/dotcloud/env/bin/python hack/manage.py celerycam
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
Путь питона пошел от python
в /home/dotcloud/env/bin/python
,
Я не уверен, почему супервайзер говорит, что он работает, когда он не работает, но, надеюсь, это маленькое изменение поможет исправить ваши ошибки и вернуть все к работе снова.