Flask 将 Request 带到请求里

上回书说到,我把一些比较耗时的工作放在了 Thread 里面。放进去之后,又遇到一些问题:url_for 函数工作不正常。


具体表现是,使用 url_for 的时候,不能生成相对地址,只能设置环境变量后,生成绝对地址。

查了好久,说是需要使用 copy_current_request_context ,将当前请求带进去。网上的教程都是将它作为装饰器来用。在经过一些尝试后,下面的方法成功了:

from flask import copy_current_request_context
from flaskthreads import AppContextThread
AppContextThread(target=copy_current_request_context(some_function)).start())

不过需要注意的是, copy_current_request_context 只能在「运行时」使用,也就是说不能定义函数的时候就加上这个东西。


OK 今天就水到这里。发现好久没更新博客了……

发表评论