欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Flask怎么實現異步任務處理方式呢

李中冰2年前18瀏覽0評論

Flask怎么實現異步任務處理方式呢?

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

這個函數具體的執行過程是:

調用時復制當前請求上下文 (request)

原請求立即繼續執行

func 被執行時,復制的 request 會被 push,從此這就可以被認為是一個全新的任務

須注意的是,因為復制的請求是被 push 進來的,所以 before_request 的信號不會被觸發。但之后的 after_request 和 tear_doen_request 還會有。以及,因為只復制了 request,其他的上下文變量,如 g,是沒有被復制的。

lang:python

import gevent

from flask import copy_current_request_context

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

"""

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

"""

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