gpt4 book ai didi

Python mod_wsgi 应用程序奇怪的行为

转载 作者:行者123 更新时间:2023-12-01 05:44:48 26 4
gpt4 key购买 nike

我对 Python 和 Python Web 应用程序开发比较陌生。目前我正在使用 mod_wsgi 在 Python 中创建一个 hello world 应用程序

这是我的配置。

Apache 配置

<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 外部的日志。

输出

First time run after restarting apache

DEBUG - app - I am included only once

DEBUG - app - I will be called only after apache restart

DEBUG - app - I will be invoked for every request

When I refresh the page in browser

DEBUG - app - I will be invoked for every request

发生了什么事?我知道 __init__ 不是构造函数,应用程序对象缓存在某处?这是什么故事。

最佳答案

您的代码甚至与记录的消息不匹配。

忽略这一点,该模块仅在首次加载时导入一次。

__init__() 仅在以下情况下调用一次:

application = mysite.app.APP()

在导入时运行。然后 __call__() 对每个请求运行。

所以,是的,内容被缓存在进程中,并在后续请求中重用。

IOW,事情不会像 PHP 那样在每个请求时都重新加载。

所以不确定问题是什么。

关于Python mod_wsgi 应用程序奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com