あまりにも言葉のタイトルが残念です。新しいEventSourceでFlaskセッションを使用する
私の目標は、AJAXを使ってFlaskページを設定して、Pythonプログラムの実行中に動的コンテンツをページに追加できるようにすることです。
flask_oauthlibを使用して、REST APIへのアクセストークンを取得し、そのページングされたコンテンツのREST APIにクエリを実行しています。
私は、REST呼び出しを繰り返してAPIからのコンテンツの別のページを取得するので、「進捗状況」を表示したいと考えています。 REST APIアクセストークンは、ユーザーのセッション変数に格納されます。
theseの手順を実行して、基本的な動的ページを作成して実行しています。しかし、私が "progress"関数の変更を開始したときに、セッション変数にアクセスを追加すると、すべてが失敗し始めます。
エラーが表示されます:RuntimeError: Working outside of request context.
これは正しいセッションのコンテキストではないことを伝えます。
私の推測は、このエンドポイントがnew EventSource
を使用してjavascriptから呼び出されているからです...この方法でセッションコンテキストにアクセスするにはどうしたらよいでしょうか?
正しいパスを下っているのですか、より良いオプションがありますか?ここで
は、私が持っているさまざまなコードブロックです:
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
var source = new EventSource("/progress");
source.onmessage = function(event) {
$('.text').text(event.data);
}
</script>
</head>
<body>
<p class="text"></p>
</body>
</html>
@app.route('/sentMail')
def sentMail():
return render_template('progress.html')
@app.route('/progress')
def progress():
def generate():
#code using trying to use session here
return Response(generate(), mimetype= 'text/event-stream')
これは機能しました!あなたの非常に簡潔で明確な答えをありがとう:) –