私は Python および Python Web アプリケーション開発に比較的慣れていません。現在、mod_wsgi を使用して Python で Hello World アプリケーションを作成しています。
これが私の構成です。
アパッチ構成
<VirtualHost *:80>
ServerName mysite.com
DocumentRoot /var/www/mysite
WSGIDaemonProcess mysite threads=5
WSGIScriptAlias / /var/www/mysite/mysite.wsgi
WSGIProcessGroup mysite
<Directory /var/www/mysite>
WSGIProcessGroup mysite
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
mysite.wsgi
import os
import sys
path='/var/www/mysite'
if path not in sys.path:
sys.path.append(path)
import mysite.app
application = mysite.app.App()
app.py
import mysite.log as log
logger = log.custom_logger('root')
logger.debug('I am included only once')
class App:
"""
This Class is responsible
"""
def __init__(self):
logger.debug('I will be called only after apache restart')
"""
WSGI module will call this function by default
"""
def __call__(self, environ, start_response):
logger.debug('I will be invoked for every request')
# Do some stuff here
start_response(response_state, response_header)
return [response]
問題: 内部__init__
のログと外部のログを確認できませんapp.py
。
出力
Apacheを再起動した後の最初の実行
DEBUG - アプリ - 私は一度だけ含まれています
DEBUG - アプリ - Apache の再起動後にのみ呼び出されます
DEBUG - アプリ - リクエストごとに呼び出されます
ブラウザでページを更新すると
DEBUG - アプリ - リクエストごとに呼び出されます
何が起こっている?コンストラクターではないことは承知して__init__
います。アプリケーション オブジェクトはどこかにキャッシュされていますか? 話は何ですか。