と同じくらい将来性のある代替ソリューションを次に示しget_wsgi_application
ます。Django の初期化で使用する環境変数を設定することもできます。
# in wsgi.py
KEYS_TO_LOAD = [
# A list of the keys you'd like to load from the WSGI environ
# into os.environ
]
def loading_app(wsgi_environ, start_response):
global real_app
import os
for key in KEYS_TO_LOAD:
try:
os.environ[key] = wsgi_environ[key]
except KeyError:
# The WSGI environment doesn't have the key
pass
from django.core.wsgi import get_wsgi_application
real_app = get_wsgi_application()
return real_app(wsgi_environ, start_response)
real_app = loading_app
application = lambda env, start: real_app(env, start)
がそのプロセスをどのように管理しているかは 100% 明確mod_wsgi
ではありませんが、WSGI アプリを頻繁に再ロードすることはないと思います。その場合、Django の初期化によるパフォーマンスの低下は、最初のリクエスト内で 1 回だけ発生します。
または、Django を初期化する前に環境変数を設定する必要がない場合は、次を使用できます。
# in wsgi.py
KEYS_TO_LOAD = [
# A list of the keys you'd like to load from the WSGI environ
# into os.environ
]
from django.core.wsgi import get_wsgi_application
django_app = get_wsgi_application()
def loading_app(wsgi_environ, start_response):
global real_app
import os
for key in KEYS_TO_LOAD:
try:
os.environ[key] = wsgi_environ[key]
except KeyError:
# The WSGI environment doesn't have the key
pass
real_app = django_app
return real_app(wsgi_environ, start_response)
real_app = loading_app
application = lambda env, start: real_app(env, start)