上回书说到,我把一些比较耗时的工作放在了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今天就水到这里。发现好久没更新博客了……
发表回复