Django有類似於ASP.NET MVC的Asynchronous Controller嗎?Django異步請求
我有一些請求將由芹菜工作人員處理,但不會花費很長時間(幾秒鐘)。我希望客戶在工作完成後得到迴應。我可以讓我的視圖函數等待任務完成,但我擔心它會給Web服務器帶來太多的負擔。
澄清:
這裏的流量我能有今天
def my_view(request):
async = my_task.delay(params)
result = async.get()
return my_response(result)
async.get()
可能需要幾秒鐘 - 不要太長,這樣客戶端不能等待HTTP響應找回。
此代碼可能會給服務器帶來不必要的壓力。什麼ASP.NET MVC的AsynchronousController
提供,就是要打破這個函數有兩種能力,與此類似:
def my_view(request):
async = my_task.delay(params)
return DelayedResponse(async, lambda result=>my_response(result))
這釋放了Web服務器,直到異步操作完成,以處理其他請求。一旦完成,它將在結果上執行lambda表達式,並返回響應。
欲瞭解更多信息:http://docs.celeryproject.org/en/latest/reference/celery.html?highlight=chain#celery.chain – pynovice 2013-04-23 08:34:20
我不想連鎖任務。我會澄清。 – zmbq 2013-04-23 08:36:21