Question

J'ai un serveur Ubuntu configuré avec 5 sites Django différents qui l'exécutent. Ceux-ci sont utilisés pour les tests, donc chaque développeur a son propre site et sa base de données ainsi qu'un site de code intégré qui n'est mis à jour que lorsque les fonctionnalités sont prêtes. Jenkins est utilisé pour mettre à jour chaque site à partir de GitHub chaque fois que les modifications sont poussées vers le référentiel.

Nous avons récemment ajouté Django-Celery à nos dépendances afin que nous puissions effectuer un traitement sur des fichiers téléchargés de manière asynchrone. Chaque site a désormais besoin de sa propre file d'attente de céleri qui utilise les paramètres corrects (base de données, répertoire de téléchargement, etc.) pour ce site particulier.

Je souhaite redémarrer chaque serveur de céleri chaque fois que le code change afin qu'il puisse obtenir automatiquement les dernières modifications. Nous avons un script de mise à jour dans notre référentiel GIT que Jenkins exécute chaque fois qu'il met à jour un site. Lorsque j'essaie de démarrer un démon de céleri dans ce script, le céleri démarre, mais s'arrête à nouveau à la fin du script.

Voici une copie de mon script de mise à jour:

#!/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

Voici une copie du journal de céleri pendant l'exécution de ce script:

[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)

Des conseils sur la façon dont je peux faire démarrer les démons du céleri par Jenkins pour ne pas fermer? Merci beaucoup!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top