Ich bin relativ neu in der gesamten Servertechnologie und habe dieses Tutorial befolgt, um meine Django-App mit mod_wsgi auf einem Apache-Webserver bereitzustellen:
http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/
Hier ist meine virtuelle Hosts-Datei:
<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>
So wie ich das verstehe, sollte die wsgi_prod.py
Datei nur einmal ausgeführt werden, wenn der Server startet (oder wenn er die erste Anfrage erhält – da bin ich mir nicht ganz sicher). In meiner Anwendung wird sie jedoch mehrmals ausgeführt, wenn Anfragen an den Server gesendet werden.
Es wird nicht bei allen Anfragen ausgeführt, sondern nur bei einigen. Und es gibt auch einige Anfragen, die wsgi_prod.py
nur manchmal die Ausführung auslösen.
Dies ist meine wsgi_prod.py-Datei:
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()
Hat jemand eine Idee, was in meinem Fall schiefgelaufen sein könnte und wo ich mit der Fehlersuche beginnen könnte?
Antwort1
Es würde einmal pro Prozess geladen werden.
Sie verwenden wahrscheinlich eine Multiprozesskonfiguration und nachfolgende Anfragen werden von unterschiedlichen Prozessen bearbeitet und/oder Prozesse werden wiederverwendet. Drucken Sie die Prozess-ID im Debug aus. Lesen Sie auch:
- http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
- http://blog.dscpl.com.au/2012/10/warum-verwenden-Sie-den-embedded-mode-of.html
und schau: