У меня есть сервер Ubuntu, на котором запущено 5 разных сайтов django.Они используются для тестирования, поэтому у каждого разработчика есть свой собственный сайт и база данных, а также один сайт для интегрированного кода, который обновляется только тогда, когда функции готовы.Jenkins используется для обновления каждого сайта из Github всякий раз, когда в репозиторий передаются изменения.
Мы недавно добавили Django-Celery в наши зависимости, чтобы мы могли выполнять некоторую обработку загруженных файлов асинхронно.Каждый сайт теперь нуждается в собственной очереди сельдерея, которая использует правильные настройки (база данных, каталог загрузки и т. Д.) Для этого конкретного сайта.
Я хочу перезапускать каждый сервер сельдерея всякий раз, когда код изменяется, чтобы он мог получить последние измененияавтоматически.В нашем репозитории git есть скрипт обновления, который Jenkins запускает всякий раз, когда обновляет сайт.Когда я пытаюсь запустить демона сельдерея в этом скрипте, запускается сельдерей, но он снова закрывается в конце скрипта.
Вот копия моего скрипта обновления:
#!/bin/bash
# Delete all *.pyc files
find $WORKSPACE -name '*.pyc' | xargs rm
# Update the database
[…]
# Run automated tests
python code/manage.py test <project> --noinput
TEST_STATUS=$?
# Refresh this repo's public website
touch $WORKSPACE/apache/wsgi.py
# Restart our celery daemon for this installation
/sbin/start-stop-daemon --stop -p $WORKSPACE/../celery.pid
echo 'Starting Celery Server'
# When run on the command line, this line starts a daemon just fine
/sbin/start-stop-daemon --start --background --quiet --oknodo -p $WORKSPACE/../celery.pid -m --exec $WORKSPACE/code/manage.py -- celeryd --logfile=$WORKSPACE/../celery.log
echo 'Celery Server Status: '$?
exit $TEST_STATUS
Воткопия журнала сельдерея во время выполнения этого сценария:
[2011-05-10 20:45:41,286: WARNING/MainProcess] -------------- celery@ip-10-227-139-6 v2.2.6
---- **** -----
--- * *** * -- [Configuration]
-- * - **** --- . broker: djkombu.transport.DatabaseTransport://guest@localhost:5672/
- ** ---------- . loader: djcelery.loaders.DjangoLoader
- ** ---------- . logfile: /var/lib/jenkins/jobs/mpdaugherty-farmforce/workspace/../celery.log@WARNING
- ** ---------- . concurrency: 1
- ** ---------- . events: OFF
- *** --- * --- . beat: OFF
-- ******* ----
--- ***** ----- [Queues]
-------------- . celery: exchange:celery (direct) binding:celery
[2011-05-10 20:45:41,333: WARNING/MainProcess] celery@ip-10-227-139-6 has started.
[2011-05-10 20:46:28,481: WARNING/MainProcess] celeryd: Warm shutdown (MainProcess)
Какой-нибудь совет, как я могу заставить демонов сельдерея, запущенных Дженкинсом, не закрываться?Большое спасибо!