在Django视图中无法获得子流程输出
问题描述:
我想在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''
。
我无法弄清楚我的电话有什么问题。
答
的答案是使用.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]
尝试通过'标准输出= subprocess.PIPE'到'subprocess.check_output()'调用 – ZdaR
@ZdaR您的评论转向我解决 –