2017-02-11 5 views
0

Djangoビューで自分のスクリプト(TensorFlow neaural chatbotモデル)のコマンドラインコールをエミュレートし、コンソールから変数に出力を取得します。Djangoビューでサブプロセス出力を取得できません

私は自分のサーバーのターミナルで手動で実行します。

python3 var/www/engine/chatbot/udc_predict.py --model_dir=var/www/engine/chatbot/runs/1486057482/ 

出力が良好であり、プリントアウト。

だから私のDjangoのビューでは、私はない:

 import subprocess 
     answer = subprocess.check_output(['python3', 'var/www/engine/chatbot/udc_predict.py','--model_dir=var/www/engine/chatbot/runs/1486057482/'], shell=True, stderr=subprocess.STDOUT, timeout=None) 
     print('answer', answer) 

そしてanswer変数はApacheのエラーログにb''として印刷されます。

私の電話で何が間違っているかわかりません。

+1

あなたのコメントを解決するために私をずらし@ZdaR 'subprocess.check_output()'コール – ZdaR

+1

に 'STDOUT = subprocess.PIPE'を渡して試してみてください –

答えて

0

答えは.communicateを使用することです()とPIPE:

 from subprocess import Popen, PIPE 
     proc = Popen(
      "python3 var/www/engine/chatbot/udc_predict.py --model_dir=var/www/engine/chatbot/runs/1486057482/", 
      shell=True, 
      stdout=PIPE, stderr=PIPE 
     ) 
     proc.wait()  
     res = proc.communicate() 
     if proc.returncode: 
      print(res[1]) 
     print('result:', res[0]) 
     answer = res[0] 
関連する問題