flask上下文管理流程 Flask怎么實現(xiàn)異步任務(wù)處理方式呢?
Flask怎么實現(xiàn)異步任務(wù)處理方式呢?有時HTTP請求的處理時間太長,部分代碼不需要同步執(zhí)行。我們可以使用下面的函數(shù)來拋出任務(wù)以異步執(zhí)行,接口將立即返回。此函數(shù)的具體執(zhí)行過程如下:調(diào)用時復制當前請求上
Flask怎么實現(xiàn)異步任務(wù)處理方式呢?
有時HTTP請求的處理時間太長,部分代碼不需要同步執(zhí)行。我們可以使用下面的函數(shù)來拋出任務(wù)以異步執(zhí)行,接口將立即返回。
此函數(shù)的具體執(zhí)行過程如下:
調(diào)用時復制當前請求上下文(request)
原始請求將立即繼續(xù)執(zhí)行
執(zhí)行func時,將推送復制的請求。從此以后,它可以被視為一個新任務(wù)
需要注意的是,由于復制的請求被推入,所以“before”請求信號不會被觸發(fā)。但在那之后,在“請求”和“撕裂”之后,會有更多的請求。而且,因為只復制了請求,所以不會復制其他上下文變量,例如﹣g。
朗:蟒蛇
import gevent
from flask import copy current request context
def i have a Dream(func,*args,**kwargs):
“”“
異步任務(wù)處理。此函數(shù)立即返回,并使用gevent的新線程執(zhí)行func函數(shù)(使用請求上下文)。
“”“
返回gevent.spawn文件(復制當前請求上下文(func),*args,**kwargs)