2016-04-22 8 views
0

私の現在のアプローチは、最初に古いモデルを削除し、新しいモデルを保存し、シェルを使用しても問題はありませんが、crontabを使って自動的には動作しません。どのようなアイデアか、これをどのように解決するか?助けてくれてありがとう。私のpythonサブプロセス呼び出しがcrontabでうまくいかなかったのはなぜですか?

メインプログラムは、サブプロセスコールが戻るまで待機しません。私はこれが問題だとは思いますが、確信が持てません。

これは私の現在のコマンドです:

subprocess.call('dse hadoop fs -rmr /root/recommend_model', shell=True) 
+1

パスはどのように設定されていますか?特に、そのパスに 'dse'実行可能ファイルがありますか?あなたのログを確認してください! – dhke

+1

cronジョブを実行するとstdoutとstderrがファイルにリダイレクトされ、 'command> cron.out 2>&1'を使って読むことができます。次に、cron.outを読んで、実際のエラーが – Spade

+0

@dhkeとspadeであることを確認できます。エラーは、メインプログラムがサブプロセスコールが戻るまで待機しないことです。私はこれが問題だとは思いますが、確信が持てません。なぜどんなアイデア? – peter

答えて

1

可能な解決策は、それが正しく実行されたことを確認するためにリターンコードを待つことです。ここで

subprocessモジュールへのリンク: https://docs.python.org/2/library/subprocess.html

あなたはあなたの中にスクリプトをリターンコードを待つことができます示唆したよう

if (subprocess.call(command, args) == 0): 
    print("We are proceeding) 
else: 
    print("Something went wrong executing %s" % command) 

をさらに2を使用してスクリプトの実行をログファイルにリダイレクトしてみてください> & 1> mickey.log

最後に、いくつかのサブプロセス/ os.systemの提案がここにあります: Controlling a python script from another script

python: run external program and direct output to file and wait for finish

これはあなたの問題を解決する場合は私に知らせてください。

+1

WIN osの下にあるsubprocess.call(['python.exe'、command、args])に加えて、呼び出しを実行するためにpythonを指定する必要がある可能性がありますが、これはあなたのケースではありませんコマンドから:-)良い一日を。 –

関連する問題