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)

コードを Ubuntu10:04から12:04呼び出しに移動した後、時々p.stdout.read()失敗し始めました。失敗すると、ログ ファイルに最後に表示されるのはclosed stdin、nginx が502 Bad Gatewayページを表示することです。

4

1 に答える 1

0

この問題をよりよく理解するためにできることの 1 つは、一時的に Nginx の代わりに Django の「runserver」を使用することです。これにより、502 の代わりにページにトレースバックが表示されます。

これを行う方法がわからない場合は、次の例を使用できます。

python manage.py runserver 1.1.1.1:8080

1.1.1.1 を「localhost」または選択した IP に置き換えることができます。8080 は、開いている非特権ポートに置き換えることができます。設定ファイルを set に変更する必要がある場合がありますDEBUG=True

于 2013-01-20T01:16:29.327 に答える