リモートサーバーにあるシェルスクリプトを呼び出すためにファブリックを使用するフラスコを使用して、マイクロ Web フレームワークを作成しました。
シェル スクリプトが完了するまでに時間がかかる場合があります。ブラウザから POST リクエストを送信し、結果を待ちます。
ファブリックはフラスコ実行画面にリアルタイムのコンテンツを表示しますが、フラスコはそのリモート スクリプトの完了後にブラウザに値を返します。
ブラウザ画面にリアルタイムの値を表示するにはどうすればよいですか?
私のフラスコの部分:
@app.route("/abc/execute", methods=['POST'])
def execute_me():
value = request.json['value']
result = fabric_call(value)
result = formations(result)
return json.dumps(result)
私の生地:
def fabric_call(value):
with settings(host_string='my server', user='user',password='passwd',warn_only=True):
proc = run(my shell script)
return json.dumps(proc)
アップデート
私もストリーミングしてみました。しかし、うまくいきませんでした。出力は、スクリプトの実行が完了した後、curl POST に表示されます。何が欠けていますか?
@app.route("/abc/execute", methods=['POST'])
def execute_me():
value = request.json['value']
def generate():
for row in formations(fabric_call(value)):
yield row + '\n'
return Response(generate(), mimetype="text/event-stream")