Gibt es eigentlich eine Sichere Method festzustellen, ob die django-app gerade mit dem Development Server läuft oder mit einem echten?
Das einzige was mir einfällt: Nachsehen, was sich in os.environ tummelt...
[django] Wird der dev.Server genutzt???
Hi,
Du könntest vielleicht request.META['SERVER_SOFTWARE'] prüfen. Der Development-Server sagt dort u'WSGIServer/0.1 Python/2.5.1'. Ein anderer Server möglicherweise (kann ich jetzt nicht prüfen) etwas anderes. Ein anderes Indiz wäre, wenn dein System auf localhost:8000 läuft. Was genau willst du erreichen?
Stefan
Du könntest vielleicht request.META['SERVER_SOFTWARE'] prüfen. Der Development-Server sagt dort u'WSGIServer/0.1 Python/2.5.1'. Ein anderer Server möglicherweise (kann ich jetzt nicht prüfen) etwas anderes. Ein anderes Indiz wäre, wenn dein System auf localhost:8000 läuft. Was genau willst du erreichen?
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Mehr als ein Inziz ist das jedoch nicht, denn manchmal lässt man den WSGI-Server auch auf 0.0.0.0 lauschen oder hat im Produktiveinsatz den HTTPd auf Port 8000 und setzt einen Squid-Proxy davor.sma hat geschrieben:Ein anderes Indiz wäre, wenn dein System auf localhost:8000 läuft. Was genau willst du erreichen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Die Idee war, die urls.py dynamisch anzupassen. Es geht um das Ausliefern von statischen Dateien mittels 'django.views.static.serve'...
Momentan muss man die url.py halt selbst anpassen, siehe:
http://pylucid.net:8080/pylucid/browser ... rls.py#L97
Momentan muss man die url.py halt selbst anpassen, siehe:
http://pylucid.net:8080/pylucid/browser ... rls.py#L97
Hm, ich ja ein Fan von automatischen Konfigurationen, wo man gerade nicht daran denken muss, Dateien manuell zu ändern. Ich muss außerdem zugeben, dass ich deinen Code recht unübersichtlich aufgrund deinen "comment spams" finde. Bin kein Fan von Trennlinien.
Im Fall von static-Dateien habe ich in meiner urls.py-Datei einfach diese ganz hinten stehen und erwarte, dass im Produktivbetrieb unser Lighttpd dafür sorgt, dass so eine URL niemals bei Django ankommt. Ich sah keine Notwendigkeit, dies zu einer bedingten Anweisung zu machen.
Die Sache mit den URL-Präfixes hatten wir auch, ich hatte mich für eine Lösung mit eigenen Funktionen entschieden, z.B. so
Im Fall von static-Dateien habe ich in meiner urls.py-Datei einfach diese ganz hinten stehen und erwarte, dass im Produktivbetrieb unser Lighttpd dafür sorgt, dass so eine URL niemals bei Django ankommt. Ich sah keine Notwendigkeit, dies zu einer bedingten Anweisung zu machen.
Die Sache mit den URL-Präfixes hatten wir auch, ich hatte mich für eine Lösung mit eigenen Funktionen entschieden, z.B. so
Code: Alles auswählen
prefixed_url('foo/$', bar)
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Die Lösung ist eigentlich recht einfach:jens hat geschrieben:Gibt es eigentlich eine Sichere Method festzustellen, ob die django-app gerade mit dem Development Server läuft oder mit einem echten?
Code: Alles auswählen
if sys.argv[1].startswith("runserver"):
siehe: https://github.com/jedie/PyLucid/commit ... 4a0eb76a3e
(Mensch... Seit 2007 vergessen...)
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Wieso `startswith`?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hm. Gute Frage
Eigentlich sollte das auch funktionieren:
Damit muß man auch nicht testen ob sys.argv >= 2 ist...
...oder?
Eigentlich sollte das auch funktionieren:
Code: Alles auswählen
if "runserver" in sys.argv:
...oder?
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
jop
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wozu überhaupt if? Geht noch einfacher, in die settings.py kommt das rein:
Code: Alles auswählen
RUN_WITH_DEV_SERVER = "runserver" in sys.argv