2

Django には ASP.NET MVC のAsynchronous Controllerに似たものがありますか?

セロリ ワーカーが処理するいくつかのリクエストがありますが、それほど時間はかかりません (数秒)。ワーカーが完了した後にクライアントに応答を取得してもらいたい。タスクが完了するまでビュー関数を待機させることはできますが、Web サーバーに負担がかかりすぎるのではないかと心配です。

説明:

これが私が今日持つことができる流れです

def my_view(request):
    async = my_task.delay(params)
    result = async.get()
    return my_response(result)

async.get()クライアントが HTTP 応答が返されるのを待つことができないほど長くはないので、数秒かかることがあります。

このコードは、サーバーに不要な負担をかける可能性があります。ASP.NET MVC がAsynchronousController提供するのは、この関数を次のように 2 つに分割する機能です。

def my_view(request):
    async = my_task.delay(params)
    return DelayedResponse(async, lambda result=>my_response(result))

これにより、非同期操作が完了するまで、Web サーバーが解放されて他の要求を処理できるようになります。完了すると、結果に対してラムダ式が実行され、応答が返されます。

4

2 に答える 2