0

私は、ユーザーからの入力を取得する gui/dashboard タイプのものの構築に取り組んでおり、ユーザーがプレスを送信すると、応答を収集し、バックエンドでジョブを起動します。私が達成したいと思っているのは..ユーザーが送信を押したとき:そしてその長いジョブが処理されているとき、私は次のようなものを表示します:「あなたのジョブは正常に送信されました)送信され、終了したとき.そのページへのユーザー。

私のroute.pyスニペットは次のようになります

@app.route('/',methods=['POST'])
def get_data():
    data = request.form
    for data_tuple in data:

            requests_to_gb[data_tuple] = data[data_tuple]
    flag = execute_request(requests_to_gb) <---Fires a job

    if flag:
        flash("Your request has been submitted")

    else:
        flash("request could not be completed!")
    return render_template('request_submitted.html')

しかし、問題は.. execute_request() の処理に時間がかかる行..そしてそれが完了するまですべてが停止することですか? どうすればこれを処理できますか? また、新しいページに自動的に更新するにはどうすればよいですか?

4

1 に答える 1

3

celery分散タスク キューであるを使用します。クイックスタート ガイドを参照してください。

簡単に言えば、バックグラウンドで実行されているワーカーにタスクをオフロードして、メインのユーザー インターフェイスをブロックしないようにすることができます (これを防止しようとしています)。

良いニュースは、Python で書かれているため、flask (または django など) との統合が非常に簡単であることです。

于 2013-02-15T22:43:30.757 に答える