私は5つの異なるdjangoサイトが実行されているUbuntuサーバーをセットアップしています。これらはテストに使用されるため、各開発者は独自のサイトとデータベースだけでなく、機能の準備が完了したときに更新される統合コード用のサイトもあります。 Jenkinsは、変更がリポジトリにプッシュされるたびに、Githubから各サイトを更新するために使用されます。Jenkinsを使って自動的に複数のセロリのデーモンを起動する
私たちは最近、依存関係に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] -------------- [email protected] v2.2.6
---- **** -----
--- * *** * -- [Configuration]
-- * - **** --- . broker: djkombu.transport.DatabaseTransport://[email protected]:5672/
- ** ---------- . loader: djcelery.loaders.DjangoLoader
- ** ---------- . logfile: /var/lib/jenkins/jobs/mpdaugherty-farmforce/workspace/../[email protected]
- ** ---------- . concurrency: 1
- ** ---------- . events: OFF
- *** --- * --- . beat: OFF
-- ******* ----
--- ***** ----- [Queues]
-------------- . celery: exchange:celery (direct) binding:celery
[2011-05-10 20:45:41,333: WARNING/MainProcess] [email protected] has started.
[2011-05-10 20:46:28,481: WARNING/MainProcess] celeryd: Warm shutdown (MainProcess)
私はセロリデーモンを取得する方法について何かアドバイスジェンキンスがシャットダウンしないように始めた?どうもありがとう!
これは本当に頭痛から私を救いました。しかし、誰もこの "今のところ"の作品が元のバージョンはなぜ動作しないのか説明できますか? – timop