1

私は 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__います。アプリケーション オブジェクトはどこかにキャッシュされていますか? 話は何ですか。

4

1 に答える 1