我有一个使用mod_wsgi在Apache下运行的Flask应用程序。该应用程序需要做一些初始化,包括设置一些顶级变量,这些变量在请求处理程序内部需要被访问,然后才会收到请求。目前,这个初始化代码是app.py
只是顶级声明请求处理方法之前:初始化使用Apache和mod_wsgi运行的Flask应用程序
from flask import Flask, Response, request
<other app imports>
APP = Flask(__name__)
# initialisation code
@APP.route(<URL for request #1>)
def request_handler_1():
# request handler code
@APP.route(<URL for request #2>)
def request_handler_2():
# request handler code
应用程序的WSGI文件看起来像这样:
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/myapp")
from myapp.app import APP as application
application.secret_key = <secret key>
我已经注意到,初始化代码在收到第一个请求之前不会被调用。在接收到任何请求之前,如何在mod_wsgi加载应用程序时如何执行初始化代码?
请显示您的设置代码示例。 – MKesper
这只是设置默认编码,定义'app.py'内的请求处理程序所需的常量并设置日志记录。 –
我将所有初始化代码从应用程序移动到程序包init,并从Apache日志中,我仍然可以看到应用程序wsgi代码在收到第一个请求时首先执行。当应用程序由mod_wsgi加载时,肯定会有这样做的方式。 –