Apache-2.2
Django + Apache + mod_wsgi:為什麼wsgi腳本會執行多次?
我對所有伺服器技術都比較陌生,我按照本教程使用 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()
有誰知道我的情況可能出了什麼問題以及我可以從哪裡開始尋找錯誤?
每個程序將載入一次。
您可能正在使用多程序配置,並且後續請求正在由不同的程序處理和/或正在回收的程序。在調試中列印出程序 ID。也去閱讀:
- http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
- http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html
並觀看: