2012-06-03 1 views
3

Моя установка dotcloud (django-celery with rabbitmq) отлично работала неделю назад - процессы запускались нормально, а журналы были чистыми. Тем не менее, я недавно перенаправил (без обновления какого-либо кода), и теперь в журналах говорится, что процессы не запускаются, даже если они, похоже, работают.Dotcloud supervisord показывает ошибку, но процесс запущен

журнал Supervisord журнал

 
[email protected]:/var/log/supervisor$ more supervisord.log 
2012-06-03 10:51:51,836 CRIT Set uid to user 1000 
2012-06-03 10:51:51,836 WARN Included extra file "/etc/supervisor/conf.d/uwsgi.c 
onf" during parsing 
2012-06-03 10:51:51,836 WARN Included extra file "/home/dotcloud/current/supervi 
sord.conf" during parsing 
2012-06-03 10:51:51,938 INFO RPC interface 'supervisor' initialized 
2012-06-03 10:51:51,938 WARN cElementTree not installed, using slower XML parser 
for XML-RPC 
2012-06-03 10:51:51,938 CRIT Server 'unix_http_server' running without any HTTP 
authentication checking 
2012-06-03 10:51:51,946 INFO daemonizing the supervisord process 
2012-06-03 10:51:51,947 INFO supervisord started with pid 144 
2012-06-03 10:51:53,128 INFO spawned: 'celerycam' with pid 159 
2012-06-03 10:51:53,133 INFO spawned: 'apnsd' with pid 161 
2012-06-03 10:51:53,148 INFO spawned: 'djcelery' with pid 164 
2012-06-03 10:51:53,168 INFO spawned: 'uwsgi' with pid 167 
2012-06-03 10:51:53,245 INFO exited: djcelery (exit status 1; not expected) 
2012-06-03 10:51:53,247 INFO exited: celerycam (exit status 1; not expected) 
2012-06-03 10:51:54,698 INFO spawned: 'celerycam' with pid 176 
2012-06-03 10:51:54,698 INFO success: apnsd entered RUNNING state, process has s 
tayed up for > than 1 seconds (startsecs) 
2012-06-03 10:51:54,705 INFO spawned: 'djcelery' with pid 177 
2012-06-03 10:51:54,706 INFO success: uwsgi entered RUNNING state, process has s 
tayed up for > than 1 seconds (startsecs) 
2012-06-03 10:51:54,731 INFO exited: djcelery (exit status 1; not expected) 
2012-06-03 10:51:54,754 INFO exited: celerycam (exit status 1; not expected) 
2012-06-03 10:51:56,760 INFO spawned: 'celerycam' with pid 178 
2012-06-03 10:51:56,765 INFO spawned: 'djcelery' with pid 179 
2012-06-03 10:51:56,790 INFO exited: celerycam (exit status 1; not expected) 
2012-06-03 10:51:56,791 INFO exited: djcelery (exit status 1; not expected) 
2012-06-03 10:51:59,798 INFO spawned: 'celerycam' with pid 180 
2012-06-03 10:52:00,538 INFO spawned: 'djcelery' with pid 181 
2012-06-03 10:52:00,565 INFO exited: celerycam (exit status 1; not expected) 
2012-06-03 10:52:00,571 INFO gave up: celerycam entered FATAL state, too many st 
art retries too quickly 
2012-06-03 10:52:00,573 INFO exited: djcelery (exit status 1; not expected) 
2012-06-03 10:52:01,575 INFO gave up: djcelery entered FATAL state, too many sta 
rt retries too quickly 
[email protected]:/var/log/supervisor$ 

djerror:

 
[email protected]:/var/log/supervisor$ more djcelery_error.log 
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 
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 
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 
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 
[email protected]:/var/log/supervisor$ 

statusctrl показывает, что некоторые процессы запущены, но ИДП разные. Кроме того, функциональность сельдерея, похоже, работает нормально. Сообщения обрабатываются, и я вижу сообщения, которые обрабатываются в интерфейсе администратора django (работает камера dje celery).

 
# supervisorctl status 
apnsd       RUNNING pid 225, uptime 0:00:44 
celerycam      RUNNING pid 224, uptime 0:00:44 
djcelery       RUNNING pid 226, uptime 0:00:44 

Supervisord.conf файл:

 
[program:djcelery] 
directory = /home/dotcloud/current/ 
command = 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 = 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/ говорит о том, что проблема может быть, что питон используется неверно, поэтому я явно указан питона в файле supervisord. Теперь он работает, но он не объясняет, что я вижу выше, и почему мне пришлось изменить свою конфигурацию, когда она отлично работала на прошлой неделе.

Кроме того, не все PIDs выстраиваются в очередь:

 
2012-06-03 11:19:03,045 CRIT Server 'unix_http_server' running without any HTTP 
authentication checking 
2012-06-03 11:19:03,051 INFO daemonizing the supervisord process 
2012-06-03 11:19:03,052 INFO supervisord started with pid 144 
2012-06-03 11:19:04,061 INFO spawned: 'celerycam' with pid 151 
2012-06-03 11:19:04,066 INFO spawned: 'apnsd' with pid 153 
2012-06-03 11:19:04,085 INFO spawned: 'djcelery' with pid 155 
2012-06-03 11:19:04,104 INFO spawned: 'uwsgi' with pid 156 
2012-06-03 11:19:05,271 INFO success: celerycam entered RUNNING state, process h 
as stayed up for > than 1 seconds (startsecs) 
2012-06-03 11:19:05,271 INFO success: apnsd entered RUNNING state, process has s 
tayed up for > than 1 seconds (startsecs) 
2012-06-03 11:19:05,271 INFO success: djcelery entered RUNNING state, process ha 
s stayed up for > than 1 seconds (startsecs) 
2012-06-03 11:19:05,271 INFO success: uwsgi entered RUNNING state, process has s 
tayed up for > than 1 seconds (startsecs) 

статусе показывает, что сельдерей кулачковые ИДП не выстраиваются в очередь:

 
# supervisorctl status 
apnsd       RUNNING pid 153, uptime 0:06:17 
celerycam      RUNNING pid 150, uptime 0:06:17 
djcelery       RUNNING pid 155, uptime 0:06:17 

ответ

2

Моя первая догадка что вы используете неправильный бинарный код python (system python, а не 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 на следующее, чтобы убедиться, указывают на правильную версию питона.

[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 

Путь питон пошел fromt python к /home/dotcloud/env/bin/python.

Я не уверен, почему супервизор говорит, что он работает, когда это не так, но, надеюсь, это небольшое изменение поможет устранить ваши ошибки и снова вернуть все к работе.

+0

Он работает отдельно от разницы в весах. Журналы показывают суперзавод pid 150, celerycam pid 157, apnsd pid 160, djeclery pid 161, uwsgi pid 164, тогда как /.dotcloud run hack.worker supervisorctl status comand показывает apnsd 153, celerycam 150 [журналы показывают, что это pid for supervisord ?!], djcelery 155. Необычно, что это работало над дотлаумом раньше (я ничего не изменил), но pids ошибочны, и точно такая же настройка рушится на другом развертывании dotcloud, и именно поэтому i (я помещаю отдельную запись для этого) – Taras

+0

@taras, так что все работает, единственная разница в том, что PID не совпадают? Это проблема или просто вопрос о том, почему? –

+0

все работает нормально - это вопрос, почему, но причина, по которой меня интересует, состоит в том, что у меня возникли проблемы с почти идентичной установкой, которая побудила меня исследовать, что происходит на сервере, который работает, и любые различия между ними. – Taras