15

スーパーバイザーを使用して Python スクリプトを実行しています。

[program:twitter_track]
autorestart = true
numprocs = 1
autostart = false
redirect_stderr = True
stopwaitsecs = 1
startsecs = 1
priority = 99
command = python /home/ubuntu/services/twitter.py track
startretries = 3
stdout_logfile = /home/ubuntu/logs/twitter_track.log

しかし、プロセスは開始できません。エラーログの内容は次のとおりです。

Traceback (most recent call last):
  File "/home/ubuntu/services/twitter.py", line 6, in <module>
    from mymodule.twitter.stream import TwitterStream
ImportError: No module named mymodule.twitter.stream
Traceback (most recent call last):
  File "/home/ubuntu/services/twitter.py", line 6, in <module>

mymoduleを取得しているようですが、twitter.pyを単独で実行すると、すべて正常に動作し、スーパーバイザーを介して実行したときにのみこのエラーがスローされます。

~/.profile ファイルの PYTHONPATH に mymodule を次のように追加しました。

export PYTHONPATH=$PYTHONPATH:/home/ubuntu/lib

ターミナルを介して実行するとスクリプトが機能するのに、スーパーバイザーを介して実行するとスクリプトが機能しない理由はありますか? どんな助けでも大歓迎です。

4

2 に答える 2

33

Supervisord 構成ファイルのディレクティブにPYTHONPATH定義を追加します。次のように、セクションのenvironment下に移動する必要があります。[program:twitter_track]

environment=PYTHONPATH=/home/ubuntu/lib/

PYTHONPATHこれにより、supervisord が起動したときにPython プロセスが適切に認識されるようになります。

于 2012-02-26T19:06:34.627 に答える