4

スーパーバイザーに、Huey (redis タイプのキュー) を使用している Python スクリプトを監視および維持させようとしています。

私のスーパーバイザープログラムの構成は次のようになります。

[program:smsbot_handler]
directory=/home/ubuntu/virt_env/virt1/app/
command=/home/ubuntu/virt_env/virt1/bin/huey_consumer.py main.huey --threads=3
stdout_logfile=/home/ubuntu/smsbot_handler_log.txt
autostart=true
autorestart=true
environment=PYTHONPATH="/home/ubuntu/virt_env/virt1/app:$PYTHONPATH"
redirect_stderr=true

なぜこれがうまくいかないのか、誰かが私に手がかりを与えることができますか? ログファイルに表示されるのは次のとおりです。

Error importing main.huey

それは本当に私に届き始めています!

4

1 に答える 1

3

コマンドがスーパーバイザーから起動されていないときに正常に実行されることを既にテストしていると仮定すると、環境行を削除し、代わりにシェル スクリプトを開始し、環境を設定して、シェル スクリプトから (exec python を使用して) huey_consumer.py を起動します。

これは、スーパーバイザーの下で特定の環境を必要とするすべてのプログラムで行うことです。

次に例を示します。

スーパーバイザー構成:

[program:MyExample]
command=/ama/nms/MyExample/supervisor_myexample.sh
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1                    ; number of processes copies to start (def 1)
directory=/ama/nms/MyExample  ; directory to cwd to before exec (def no cwd)
priority=10                   ; the relative start priority (default 999)
autostart=true                ; start at supervisord start (default: true)
autorestart=true              ; retstart at unexpected quit (default: true)
startsecs=1                   ; number of secs prog must stay running (def. 1)
startretries=10                ; max # of serial start failures (default 3)
exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
stopsignal=TERM               ; signal used to kill process (default TERM)
stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)

ファイル /ama/nms/MyExample/supervisor_myexample.sh:

#!/bin/sh
# ------------------------------------------

# Set the environment
export LD_LIBRARY_PATH=<...>:$LD_LIBRARY_PATH
export PYTHONPATH=<...>:$PYTHONPATH

D=`dirname $0`
exec python $D/myexample.py arg1 arg2 arg3

重要なポイントは、スーパーバイザーが起動されたコマンドの pid を監視できるように、exec を使用してコマンドを起動することです。

于 2013-11-12T07:47:41.943 に答える