1

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

関数呼び出しの後にレンダリングを配置すると、time_using_function() が終了するまで Web ページがレンダリングされず、応答が無意味になります。

views.py:

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

Pythonスレッド化が唯一の方法ですか?


アップデート

ztaskdよりも文書化されているように見えたので、celleryを使用することになりました

4

2 に答える 2

6

その方法は、ztaskdを使用して実行することtime_consuming_function()です。

from django_ztask.decorators import task

@task()
def time_consuming_function()
    ...

ビュー.py:

def web_function(request):
    ...
    time_consuming_function.async()
    return HttpResponse()
于 2012-09-11T12:14:43.123 に答える
4

Celery (または単純なRabbit MQ )などのタスク スケジューリング フレームワークを検討することをお勧めします。

于 2012-09-11T12:14:59.487 に答える