Python 在Windows上使用mod_wsgi时加载时间不稳定
我的系统已安装以下版本的软件:Python 在Windows上使用mod_wsgi时加载时间不稳定,python,django,windows,apache,mod-wsgi,Python,Django,Windows,Apache,Mod Wsgi,我的系统已安装以下版本的软件: Python 3.4.3 amd64 mod_wsgi 4.4.13 ap24vc10 cp34无赢amd64 我使用virtualenv为两个Django项目创建了两个环境(默认情况下,它工作了!页面),一个托管在one.local.com(VirtualHost)上,另一个托管在two.local.com(VirtualHost)上。下面的代码是Apache的httpd vhost.conf文件的VirtualHost配置 <VirtualHost
- Python 3.4.3 amd64
- mod_wsgi 4.4.13 ap24vc10 cp34无赢amd64
<VirtualHost *:80>
WSGIApplicationGroup %{ENV:ONE_GROUP}
ServerName one.local.com
ServerAdmin admin@example.com
ErrorLog "D:/_pythonDev/Projects/logs/one.local.com-error.log"
CustomLog "D:/_pythonDev/Projects/logs/one.local.com-access.log" common
WSGIScriptAlias / "D:/_pythonDev/Projects/Project1/Project1/wsgi.py" application-group=%{ENV:ONE_GROUP}
# I also tried WSGIImportScript
<Directory "D:/_pythonDev/Projects/Project1/Project1">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /favicon.ico "D:/_pythonDev/Projects/Project1/static/favicon.ico"
Alias /static/ "D:/_pythonDev/Projects/Project1/static/"
<Directory "D:/_pythonDev/Projects/Project1/static">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
WSGIApplicationGroup %{ENV:TWO_GROUP}
ServerName two.local.com
ServerAdmin admin@example.com
ErrorLog "D:/_pythonDev/Projects/logs/two.local.com-error.log"
CustomLog "D:/_pythonDev/Projects/logs/two.local.com-access.log" common
WSGIScriptAlias / "D:/_pythonDev/Projects/Project2/Project2/wsgi.py" application-group=%{ENV:TWO_GROUP}
<Directory "D:/_pythonDev/Projects/Project2/Project2">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /favicon.ico "D:/_pythonDev/Projects/Project2/static/favicon.ico"
Alias /static/ "D:/_pythonDev/Projects/Project2/static/"
<Directory "D:/_pythonDev/Projects/Project2/static">
Require all granted
</Directory>
</VirtualHost>
问题:
- 装载时间不稳定,大约需要10秒
- 加载时间不稳定的原因
- 答案是解决它
logging.info.(time.time())
在get\u wsgi\u application()
之前和之后,当我重新启动httpd服务器时,日志文件被创建,我发现记录的开始和结束时间是相等的。然后,我从浏览器中请求URL,在浏览器中发生时间延迟,但没有将日志写入文件。全局范围的代码仅在加载代码文件时执行一次,而不是每次请求。如果在请求开始时输出时间呢?如果请求的开始和结束之间的差异可以忽略不计,那么问题就在mod_wsgi之外。Apache配置和/或DNS名称查找延迟可能存在问题,后者甚至可能与浏览器有关,而不是Apache。@GrahamDumpleton开始时间等于结束时间,我正在通过同一本地网络中的其他计算机访问这两个网站。您应先尝试使用探查器查看时间的占用情况,要么使用浏览器的开发工具(通常是F12,然后使用“网络”选项卡),要么使用django调试工具栏探查器可能过于复杂,安装起来可能很复杂。只需在WSGI脚本文件的开头导入时间模块,然后在调用“get_WSGI_application()”之前和之后添加“print time.time()”。这至少可以确认Django初始化中发生的情况。输出将以秒为单位。比较这两个地方的时间。@GrahamDumpleton我添加了logging.info.(time.time())
在get\u wsgi\u application()
之前和之后,当我重新启动httpd服务器时,日志文件被创建,我发现记录的开始和结束时间是相等的。然后,我从浏览器中请求URL,在浏览器中发生时间延迟,但没有将日志写入文件。全局范围的代码仅在加载代码文件时执行一次,而不是每次请求。如果在请求开始时输出时间呢?如果请求的开始和结束之间的差异可以忽略不计,那么问题就在mod_wsgi之外。Apache配置和/或DNS名称查找延迟可能存在问题,后者甚至可能与浏览器有关,而不是Apache。@GrahamDumpleton开始时间等于结束时间,我正在通过同一本地网络中的其他计算机访问这两个网站。
import os
import sys
import site
site.addsitedir("D:/_pythonDev/env/env1/Lib/site-packages")
sys.path.append("D:/_pythonDev/Projects/Project1/Project1")
sys.path.append("D:/_pythonDev/Projects/Project1")
activate_env_file = "D:/_pythonDev/env/env1/Scripts/activate_this.py"
exec(open(activate_env_file).read(), dict(__file__=activate_env_file))
from django.core.wsgi import get_wsgi_application
os.environ["DJANGO_SETTINGS_MODULE"] = "Project1.settings"
application = get_wsgi_application()