Flaskアプリケーション内のPythonで新しいスレッドを開始しようとしています。私は、要求によって引き起こされるバックグラウンド作業をしていますが、要求に応答するために作業が完了するのを待つ必要はありません。フラスコがサブスレッドを開始するときに「リクエストコンテキスト外で動作しています」
このサブ脅威のフラスコ要求は、入ってきた要求に設定できますか?理由は、私たちのDB(mongoDBの前のmongoengine)への問い合わせに対する私たちのACLは、要求に応じて(フラスコのリクエストオブジェクトから取得した)リクエストのユーザに依存しています。サブスレッドでは使用できません。
ご意見をいただければ幸いです。
ここで私はどのように扱っているのか疑似コードですが、動作しません。
@app.route('/my_endpoint', methods=['POST'])
def my_endpoint_handler():
#do tracking in sub-thread so we don't hold up the page
def handle_sub_view(req):
from flask import request
request = req
# Do Expensive work
thread.start_new_thread(handle_sub_view, (request))
return "Thanks"
を渡すことができますか? –
フラスコはいつでもリクエストにアクセスできるため、ドキュメントベースのクラスにはリクエストからユーザを取得するクエリセットマネージャがあります。私がやっている仕事はクエリーセットマネージャーよりもはるかに高いレベルなので、ユーザーだけで使うことはできません – MattoTodd
リクエストはスレッド/コンテキストローカルですので、利用できません。 。私はまだ依頼オブジェクトの依存関係をリファクタリングするべきだと考えています。 –