我正在烧瓶/python中编写一个服务器端应用程序,并且有一些必须加载以进行计算的数据的问题。加载数据(大约 40 MB)需要更长的时间来处理服务器响应,并且数据永远不会改变,所以我希望它只加载一次,在 apache 启动时有效。但是无论我尝试什么,每次请求进入时它都会重新加载并大大减慢速度。我可以通过下面显示的打印语句来判断,它为每个请求写入 apache 日志。我想加载数据,因此将该行写入日志,仅在启动时一次。
有趣的是,这只发生在脚本通过 WSGI 上的 apache 运行时——如果我从命令行使用 python 在本地运行它,数据加载只发生一次,服务器响应速度要快得多。
有什么想法吗?
我最近使用 flask_cache 的尝试是这样的:
@cache.cached(key_prefix = 'my_key')
def load_huge_file():
#Do some things and assign data from a large file to loaded_data
print "Huge data set loaded!"
return loaded_data
shared_data = load_huge_file()
@app.route("/user_input")
def user_response():
global shared_data
return fairly_quick_function(args, shared_data)
编辑 - 谢谢 - 使用 before_first_request 并将“WSGIDaemonProcess myApp processes=1”添加到我的 WSGI 配置中就可以了。现在它保持进程运行,只是从中产生新的请求,而不是每次都重新运行 init。