2

これは私がすでに尋ねた質問に対する別のアプローチです

Djangoでの同時マルチタスク

イントロを共有します。


私のWebプロジェクトには、時間のかかる機能があります。関数が計算を実行している間、計算が完了すると結果が電子メールで送信されることをユーザーに通知するWebページをレンダリングする必要があります。

views.py:

def web_function(request):
    ...
    return HttpResponse(results_will_be_sent_by_mail.html)
    time_consuming_function()

レンダリングする必要のあるページは非常に単純であり、time_sumption_function()からの戻り情報を必要としないため、マルチタスクをスキップして、どういうわけか最初にページをレンダリングして表示し、time_sumption_function()を呼び出す方法はありますか?


考えられる解決策:

  1. 「web_function」の呼び出しの前のページで入力ボタンが押されたら、一時ページをレンダリングするJavaScriptコードを添付しますか?

アップデート

セロリを使うことになった。Ajaxの実験に成功しませんでした。

4

1 に答える 1

7

関数のreturnステートメントは、その関数の終わりを表します。*スニペットの時間のかかる関数は関数のスコープ外であるため、到達することはありません。

タスクを処理するための解決策は次のとおりです。非同期タスクとして関数をラップするのに適したセロリ。同期して行う必要がある場合は、少なくともBeforeSendで何が起こっているかをユーザーに示すことができるように、これにajaxを使用してみませんか?

*これはPythonと、すべてではないにしてもほとんどのオブジェクト指向プログラミング言語に当てはまります。

于 2012-09-13T06:26:33.677 に答える