Domanda

Ho un server Ubuntu impostato con 5 diversi siti Django in esecuzione. Questi vengono utilizzati per i test, quindi ogni sviluppatore ha il proprio sito e database, nonché un sito per il codice integrato che viene aggiornato solo quando le funzionalità sono pronte. Jenkins viene utilizzato per aggiornare ciascun sito da GitHub ogni volta che le modifiche vengono spinte nel repository.

Di recente abbiamo aggiunto Django-Celery alle nostre dipendenze in modo da poter fare un po 'di elaborazione su file caricati in modo asincrono. Ogni sito ora necessita della propria coda di sedano che utilizza le impostazioni corrette (database, caricamento della directory, ecc.) Per quel particolare sito.

Voglio riavviare ogni server di sedano ogni volta che le modifiche al codice in modo che possa ottenere automaticamente le ultime modifiche. Abbiamo uno script di aggiornamento all'interno del nostro repository git che Jenkins esegue ogni volta che aggiorna un sito. Quando provo ad avviare un daemon di sedano all'interno di questa sceneggiatura, si inizia il sedano, ma si spegne di nuovo alla fine della sceneggiatura.

Ecco una copia del mio script di aggiornamento:

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

Ecco una copia del registro del sedano durante l'esecuzione di questo 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)

Qualche consiglio su come posso far iniziare i demoni di sedano da Jenkins a non chiudere? Molte grazie!

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top