我有一個使用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加載時,肯定會有這樣做的方式。 –