dotcloud supervisord twistd преждевременно завершает работу

Я пытаюсь настроить демон Twistd на dotcloud:

Мой файл supervisord.conf:

[program:apnsd]
command=/home/dotcloud/env/bin/twistd --logfile /var/log/supervisor/apnsd.log apnsd -c gp_config.py
directory=/home/dotcloud/current/apnsd

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

Из журнала супервайзера:

more supervisord.log
2012-05-19 03:07:52,723 CRIT Set uid to user 1000
2012-05-19 03:07:52,723 WARN Included extra file "/etc/supervisor/conf.d/uwsgi.c
onf" during parsing
2012-05-19 03:07:52,723 WARN Included extra file "/home/dotcloud/current/supervi
sord.conf" during parsing
2012-05-19 03:07:52,922 INFO RPC interface 'supervisor' initialized
2012-05-19 03:07:52,922 WARN cElementTree not installed, using slower XML parser
 for XML-RPC
2012-05-19 03:07:52,923 CRIT Server 'unix_http_server' running without any HTTP
authentication checking
2012-05-19 03:07:52,932 INFO daemonizing the supervisord process
2012-05-19 03:07:52,934 INFO supervisord started with pid 144
2012-05-19 03:07:53,941 INFO spawned: 'apnsd' with pid 147
2012-05-19 03:07:53,949 INFO spawned: 'uwsgi' with pid 149
2012-05-19 03:07:54,706 INFO exited: apnsd (exit status 0; not expected)
2012-05-19 03:07:55,712 INFO spawned: 'apnsd' with pid 175
2012-05-19 03:07:55,712 INFO success: uwsgi entered RUNNING state, process has s
tayed up for > than 1 seconds (startsecs)
2012-05-19 03:07:56,261 INFO exited: apnsd (exit status 1; not expected)
2012-05-19 03:07:58,267 INFO spawned: 'apnsd' with pid 176
2012-05-19 03:07:58,783 INFO exited: apnsd (exit status 1; not expected)
2012-05-19 03:08:01,790 INFO spawned: 'apnsd' with pid 177
2012-05-19 03:08:02,840 INFO success: apnsd entered RUNNING state, process has s
tayed up for > than 1 seconds (startsecs)

Из журнала apnsd:

dotcloud@hack-default-www-0:/var/log/supervisor$ more apnsd-stderr---supervisor
-m7GnKV.log
INFO:root:Reactor Type: <twisted.internet.pollreactor.PollReactor object at 0x10
a09d0>
DEBUG:root:Creating listener: apnsd.listeners.line.LineProtocolFactory
INFO:root:Listening on Line Protocol on :1055
DEBUG:root:Listener Created: <apnsd.listeners.line.LineProtocolFactory instance
at 0x12fc8c0>
DEBUG:root:Creating App Factory: apnsd.daemon.APNSFactory
INFO:root:Connecting to APNS Server, App: apns_dev:AAA.com.company.www
INFO:root:apns_dev:AAA.com.company.www -> Started connecting to APNS con
nector...
INFO:root:Registering Application: apns_dev:GoParcel...
DEBUG:root:Creating App Factory: apnsd.daemon.APNSFactory
INFO:root:Connecting to APNS Server, App: apns_dev:T365ED94A9.com.appitems.parce
ls
INFO:root:apns_dev:T365ED94A9.com.appitems.parcels -> Started connecting to APNS
 connector...
INFO:root:Registering Application: apns_dev:GoParcelVictor...
Another twistd server is running, PID 172

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 172
--More--(42%)

Статус работника не выполнен:

./dotcloud run hack.worker supervisorctl status
USER PATH IS:  C:\Users\Taras/.dotcloud\dotcloud.conf
# supervisorctl status
apnsd                            FATAL      Exited too quickly (process log may
have details)

А вот процесс twistd есть (ps -ef):

dotcloud   171     1  0 03:13 ?        00:00:00 /home/dotcloud/env/bin/python /home/dotcloud/env/bin/twistd --logfile /var/log/supervisor/apnsd.log apnsd -c gp_config.py

У меня возникает аналогичная проблема при попытке запустить процесс через скрипт-оболочку (и с использованием exec, чтобы дочерний процесс не создавался). Что я делаю не так?


person Trent    schedule 19.05.2012    source источник


Ответы (1)


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

Вы должны начать twistd с опцией --nodaemon: twistd останется на переднем плане, и супервайзер будет счастлив!

person jpetazzo    schedule 19.05.2012
comment
Вот и все... по какой-то причине я думал, что использование exec предотвратит это, но, оглядываясь назад, это не имеет никакого смысла. - person Trent; 20.05.2012