卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

flask異步處理耗時(shí)任務(wù) Flask怎么實(shí)現(xiàn)異步任務(wù)處理方式呢?

Flask怎么實(shí)現(xiàn)異步任務(wù)處理方式呢?有時(shí)候一次 http 請(qǐng)求的處理時(shí)間過(guò)長(zhǎng),而其中一部分代碼又是不必同步執(zhí)行的。我們就可以用以下函數(shù)把任務(wù)拋出去異步執(zhí)行,同時(shí)接口立即返回。這個(gè)函數(shù)具體的執(zhí)行過(guò)程是

Flask怎么實(shí)現(xiàn)異步任務(wù)處理方式呢?

有時(shí)候一次 http 請(qǐng)求的處理時(shí)間過(guò)長(zhǎng),而其中一部分代碼又是不必同步執(zhí)行的。我們就可以用以下函數(shù)把任務(wù)拋出去異步執(zhí)行,同時(shí)接口立即返回。

這個(gè)函數(shù)具體的執(zhí)行過(guò)程是:

調(diào)用時(shí)復(fù)制當(dāng)前請(qǐng)求上下文 (request)

原請(qǐng)求立即繼續(xù)執(zhí)行

func?被執(zhí)行時(shí),復(fù)制的 request 會(huì)被 push,從此這就可以被認(rèn)為是一個(gè)全新的任務(wù)

須注意的是,因?yàn)閺?fù)制的請(qǐng)求是被 push 進(jìn)來(lái)的,所以?before_request?的信號(hào)不會(huì)被觸發(fā)。但之后的?after_request?和?tear_doen_request?還會(huì)有。以及,因?yàn)橹粡?fù)制了 request,其他的上下文變量,如?g,是沒(méi)有被復(fù)制的。

lang:python

import gevent

from flask import copy_current_request_context

def i_have_a_dream(func, *args, **kwargs):

"""

異步任務(wù)處理。本函數(shù)會(huì)立即返回,并使用 gevent 的新線程執(zhí)行 func 函數(shù)(帶 request 上下文)。

"""

return gevent.spawn(copy_current_request_context(func), *args, **kwargs)