2

virtualboxの下でvagrant環境としてUbuntu 14.04.4 LTSを実行しています。このボックスには、次の構成があります。

  • スーパーバイザ 3.0b2

  • 仮想環境下のpython 3.4

  • セロリ3.1.23

  • 花 0.9.1

スーパーバイザーの下での花の構成は次のとおりです。

[program:flower]
command=/home/vagrant/.virtualenvs/meridian/bin/python /vagrant/meridian/meridian/manage.py celery flower --loglevel=INFO -conf=/vagrant/meridian/meridian/meridian/flowerconfig.py
directory=/vagrant/meridian/meridian
user=vagrant
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/flower-stdout.log
stderr_logfile=/var/log/supervisor/flower-stderr.log
priority=997
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5

flowerconfig.py は空のファイルです。したがって、すべての値はデフォルトです。ホストは localhost、ポートは 5555 です。

コマンド ラインから flower を実行すると、次のようになります。

vagrant@localhost> 花

必要に応じて実行され、ブラウザでタスクの結果が表示され、アドレス localhost:5555 にアクセスします。

netstat は、リッスンされているポートを表示します。

vagrant@localhost> netstat -l | grep 5555

tcp        0      0 *:5555                  *:*                     LISTEN
tcp6       0      0 [::]:5555               [::]:*                  LISTEN

それで、それはOKです。

この方法でスーパーバイザーの下で flowe を実行すると:

vagrant@localhost> sudo Supervisorctl start flower

それはあるべきように始まります。Netstat は、ポート 5555 がリッスンされていることを示しています。しかし、ブラウザからのクエリはハングするだけです。

なぜ花はスーパーバイザーの下で応答しないのですか?

4

1 に答える 1

1

私は解決策を見つけました。問題は、自分の仮想環境ではなく flower を実行したことです。シェル ファイル「start_flower.sh」を追加しました。

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
source /home/vagrant/.virtualenvs/meridian/bin/activate
workon meridian
exec flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

そして、それは正常に動作し始めました。

次に、花のスーパーバイザーの構成を次のように書き直しました。

[program:flower]
command=bash -c "/vagrant/meridian/meridian/start_flower.sh"
directory=/vagrant/meridian/meridian
user=vagrant
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/flower-stdout.log
stderr_logfile=/var/log/supervisor/flower-stderr.log
priority=997
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5
stopasgroup=true 
killasgroup=true

そして今、すべてが良いです。

注: シェル ファイルで "exec" を使用して flower を実行することに注意してください。

exec flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

私がその構造を使用するとき、私はそこでこれを使用します:

flower --conf=/vagrant/meridian/meridian/meridian/flowerconfig.py

問題がありました-シェルファイルプロセスは次のように終了しました:

sudo supervisorctl stop flower

しかし、花のプロセスはとにかく働いていました!

したがって、このような問題に直面する場合は、常に「exec」を使用してください。これは、そのような場合に役立つ追加情報です。

http://veithen.github.io/2014/11/16/sigterm-propagation.html

于 2016-09-12T17:38:06.733 に答える