我在Django中使用以下Python代码从Django运行Perl脚本。
def run_command(cmd, input_data=None):
assert type(cmd) == list
stdout = ''
stderr = ''
p = subprocess.Popen(cmd,
bufsize=1000*1000,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
if (input_data):
p.stdin.write(input_data)
p.stdin.close()
log("closed stdin")
stdout = p.stdout.read()
log("read stdout")
stderr = p.stderr.read()
return (stdout, stderr)
将代码从Ubuntu 10:04
移至12:04
后,对p.stdout.read()
的调用已经开始失败。当它失败时,我在日志文件中看到的最后一件事是closed stdin
,而nginx会显示502 Bad Gateway
页。
答案 0 :(得分:0)
您可以尝试更好地了解问题的一件事是暂时使用Django的'runserver'而不是Nginx。这将允许您在页面上查看回溯而不是502。
如果您不确定如何执行此操作,可以使用以下示例:
python manage.py runserver 1.1.1.1:8080
您可以使用“localhost”或您选择的IP替换1.1.1.1,并且可以使用您希望的任何打开的非特权端口替换8080。您可能需要修改设置文件以设置DEBUG=True
。