2011-07-20 17 views
3

マルチスレッドのためにThreadPoolを使用するPythonプログラムがあります。このプログラムはシェルスクリプトの一歩です。コマンドラインでシェルスクリプトを手動で実行すると、フロー全体が期待通りに機能します。しかし、シェルスクリプトをcronjobとして実行すると、Pythonマルチスレッドステップが完全に終了する前に、次のステップに進むように見えます。cronjobでのpythonマルチスレッドの問題

Pythonプログラムの中で、私はAsyncResult.get(timeout)を呼び出して、移動する前にすべての結果が戻ってくるのを待つ。

+0

cronjobを投稿できますか?また、「プログラムは一歩」とはどういう意味ですか? – hymloth

+0

これはシェルスクリプトの1つのコマンドです。 – agf

+0

これを見てください:http://stackoverflow.com/questions/5455425/django-python-how-should-this-cronjob-be-executed/5456321#5456321 – hymloth

答えて

0

batch(1)でプログラムを実行します(コマンドman batchの出力を参照)。うまく動いてもcronのバージョンではうまくいかない場合は、環境変数の設定にはほとんど問題はありません。これを確認するには、対話シェルからprintenvを実行してそこの環境を検査します。次に、crontab内で同じことを行います(一時的に追加のcronエントリを設定する必要があります)。 Pythonを起動する前にシェルスクリプトの変数を設定してみてください。

一方、batch(1)で動作しない場合は、コードが開いているファイルと関係する可能性があります。/dev/nullからリダイレクトされた入力とシェルスクリプトを実行してファイルに出力してみてください:

$ /usr/local/bin/myscript </dev/null >|/tmp/outfile.txt 2>&1 
関連する問題