无法在Django视图中获取子进程输出

时间:2017-02-11 10:37:16

标签: python django tensorflow subprocess

我想在Django视图中模拟我的脚本(TensorFlow neaural chatbot模型)的命令行调用,并从控制台获取输出到变量。

当我在服务器的终端中手动操作时:

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 个答案:

答案 0 :(得分: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]