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によって読み込まれたときに、これを実行する方法が確実に存在する必要があります。 –