我對所有伺服器技術都比較陌生,我按照本教學使用 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
並觀看: