【发布时间】:2017-07-15 07:39:39
【问题描述】:
我有一个使用 mod_wsgi 在 Apache 下运行的 Flask 应用程序。应用程序需要做一些初始化,包括在接收任何请求之前设置一些需要在请求处理程序中访问的顶级变量。目前这个初始化代码只是请求处理方法之前app.py中的顶级语句:
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 加载应用程序时执行初始化代码?
【问题讨论】:
-
请显示您的设置代码示例。
-
这只是设置默认编码、定义
app.py中的请求处理程序所需的常量以及设置日志记录。 -
我将所有初始化代码从应用程序移动到包 init,并且从 Apache 日志中我仍然可以看到应用程序 wsgi 代码在收到第一个请求时首先被执行。当应用程序由 mod_wsgi 加载时,肯定有办法完成此操作。
标签: python apache flask mod-wsgi