gpt4 book ai didi

python - Apache 配置时使用 mod_wsgi 在每次调用时调用 before_first_request

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:15 25 4
gpt4 key购买 nike

我想将 6GB 文件加载到内存中,这样如果我收到请求,我就不必再次加载它。因此,我能够通过添加简单的装饰器 @app.before_first_request 在 Flask 服务器上实现此目的,但是当我将 apache 与同一个应用程序集成时,它会在每个请求之前调用此函数。

我的代码如下:

路线.py

@app.before_first_request
def initialize():
global SRC_PATH, MODEL
path = SRC_PATH
print("Loading Core files from {}".format(path))
MODEL = Model.load(path+utils.MODEL_EXT)
print("Loaded all files in memory")

@app.route("/test",methods=['POST'])
def search_index():
# MyCode:
return "some response"

我的apache配置是:

<VirtualHost *>
WSGIDaemonProcess yourapplication user=ubuntu group=www-data
WSGIScriptAlias / /xxx/app.wsgi
<Directory /xxx/>
WSGIProcessGroup yourapplication
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
<VirtualHost *>

和app.wsgi

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, "/xxx/")
from route import app as application

现在,在我的 apache 日志中,它正在加载核心文件的每个请求:apache.log

[Sun Oct 29 06:21:14.691075 2017] [wsgi:error] [pid 22906:tid 140496053819136] Loading Core files from /xxx
[Sun Oct 29 06:21:20.919143 2017] [wsgi:error] [pid 22906:tid 140496053819136] Loaded all files in memory

虽然我希望在第一个请求之前甚至在第一个请求之前加载它,并将其永久保留在内存中?

最佳答案

我的问题是在代码中我使用多重处理来加载文件。

因此,我不再进行多进程,而是将其更改为多线程。

之前使用多进程的代码如下:

from multiprocessing import Pool

我已将其更新为

from multiprocessing.dummy import Pool

其中multiprocessing.dummy是基于线程而不是基于进程。

关于python - Apache 配置时使用 mod_wsgi 在每次调用时调用 before_first_request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46997493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com