0
私はdjango/pythonで書かれたコードをいくつか持っています。主体は、HTTP応答がジェネレータ機能であることです。これはブラウザウィンドウ上にサブプロセスの出力を1行ずつ出力します。これは、私がdjangoテストサーバーを使用しているとき、本当にうまく動作します。実際のサーバーを使用すると失敗します。/基本的には、以前はページ上でsubmitを押すだけです。djangoジェネレータ関数が実サーバで動作しません
@condition(etag_func=None)
def pushviablah(request):
if 'hostname' in request.POST and request.POST['hostname']:
hostname = request.POST['hostname']
command = "blah.pl --host " + host + " --noturn"
return HttpResponse(stream_response_generator(hostname, command), mimetype='text/html')
def stream_response_generator(hostname, command):
proc = subprocess.Popen(command.split(), 0, None, subprocess.PIPE, subprocess.PIPE, subprocess.PIPE)
yield "<pre>"
var = 1
while (var == 1):
for line in proc.stdout.readline():
yield line
実際のサーバーでこれを使用する方法についてのご意見はありますか?またはそれが動作していない理由をデバッグする方法さえ?
サーバーの設定を更新できますか? dev/test用の内部サーバーと、運用用の何かを使用していますか? – rajasaur
@rajasaur私はテスト目的のために 'python manage.py runserver 0.0.0.0:8080'を実行しています。私はコードを展開し、それを実サーバ上で実行します。実際のサーバーは同じsettings.pyを使用しているので、私は同じ結果を期待しています。サーバー上で実行されている私のアプリケーションを除いて、他に何もありません。私はすべてのデバッグを行い、私はそれを望んで回ることができます。 – evolution
更新: ジェネレータ機能は実際には動作していますが、httpresponseが画面上のページをスローする前に完了しなければならないことがわかりました。私はユーザーが出力を見る前にそれが完了するのを待つ必要はありません。私はサブプロセスが進行するにつれて出力を見るようにしたいと思います。 – evolution