2 Stimmen

WSGI lädt die Einstellungen des falschen Projekts: Wie kann man debuggen?

Ich habe zwei django-basierte Webanwendungen auf demselben Server. Eine von ihnen nenne ich RICHTIGES_PROJEKT und die andere FALSCHES_PROJEKT

Das letzte, CORRECT_PROJECT, wird in einer virtuellen Umgebung installiert und verwendet eine andere Version von django (1.4). Es gibt ein sehr merkwürdiges Problem: manchmal, normalerweise nach einer Abmeldung oder einer E-Mail-Bestätigung (aber manchmal sieht es einfach zufällig aus!), gibt der Server eine 500 interner Serverfehler und das Fehlerprotokoll sagt

"Die Einstellungen 'WRONG_PROJECT.settings' konnten nicht importiert werden (befindet sie sich im sys.path?): Kein Modulname WRONG_PROJECT.settings, refer: CORRECT_PROJECT/URL"

Das heißt, wenn CORRECT_PROJECT geladen wird, versucht das System (WSGI? Apache? Django?) manchmal, die Einstellungen von WRONG_PROJECT zu laden.

Wenn Sie aggressiv auf Aktualisieren drücken, verschwindet der Fehler. Was könnte falsch sein? Wie kann ich den Fehler beheben?

CORRECT_PROJECT verwendet WSGI im Deamon-Modus.

Lösung

Verwenden Sie den Deamon-Modus: http://modwsgi.readthedocs.org/en/latest/configuration-directives/WSGIDaemonProcess.html

6voto

Graham Dumpleton Punkte 56087

Sie verwenden wsgi.py aus Django 1.4. Das wird nicht funktionieren, wenn Sie mehrere Webanwendungen im selben Prozess hosten.

Die beste Lösung ist die Verwendung des Daemon-Modus und die Delegierung an jeweils eine eigene Daemon-Prozessgruppe.

Wenn das nicht möglich ist, ändern Sie die wsgi.py-Dateien von beiden, so dass sie nicht verwendet werden:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

sondern verwenden Sie stattdessen:

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

Ändern Sie mysite.settings nach Bedarf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X