3

我在 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:0412:04调用之后,时不时地p.stdout.read()开始失败。当它失败时,我在日志文件中看到的最后一件事是closed stdinnginx 显示一个502 Bad Gateway页面。

4

1 回答 1

0

您可以尝试更好地了解该问题的一件事是暂时使用 Django 的“运行服务器”而不是 Nginx。这将允许您在页面上看到回溯而不是 502。

如果您不确定如何执行此操作,可以使用以下示例:

python manage.py runserver 1.1.1.1:8080

您可以将 1.1.1.1 替换为“localhost”或您选择的 IP,并且 8080 可以替换为您想要的任何开放的非特权端口。您可能需要修改设置文件以设置DEBUG=True.

于 2013-01-20T01:16:29.327 回答