我对所有服务器技术都比较陌生,并且我按照本教程使用 mod_wsgi 在 Apache Web 服务器上部署了我的 django 应用程序:
http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/
这是我的虚拟主机文件:
<VirtualHost *:80>
ServerName www.abcxyz.org
ServerAlias abcxyz.org
WSGIScriptAlias / /var/www/abcxyz/django/abcxyz/wsgi_prod.py
Alias /static/ /var/www/abcxyz/static/
<Location "/static/">
Options -Indexes
</Location>
</VirtualHost>
据我了解,该wsgi_prod.py
文件应仅在服务器启动时(或收到第一个请求时 - 我对此不太确定)执行一次。但在我的应用程序中,当向服务器发送请求时,它会执行多次。
它不会对所有请求执行,但会在某些请求上执行。并且有些请求只会在某些时候触发执行wsgi_prod.py
。
这是我的 wsgi_prod.py 文件:
import os
import sys
import site
import thread
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('/etc/Envs/abcxyz/local/lib/python2.7/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('/var/www/abcxyz/django')
sys.path.append('/var/www/abcxyz/django/abcxyz')
os.environ['DJANGO_SETTINGS_MODULE'] = 'abcxyz.settings.production'
# Activate your virtual env
activate_env=os.path.expanduser("/etc/Envs/abcxyz/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
print "WSGI RUN!!!"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
有谁知道我的情况可能出了什么问题以及我应该从哪里开始寻找错误?
答案1
每个进程将加载一次。
您可能正在使用多进程配置,并且后续请求由不同的进程处理和/或进程正在被回收。在调试中打印出进程 ID。另请阅读:
- http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
- http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html
并观看: