[django] Wird der dev.Server genutzt???

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

sma hat geschrieben:Ein anderes Indiz wäre, wenn dein System auf localhost:8000 läuft. Was genau willst du erreichen?
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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

Code: Alles auswählen

prefixed_url('foo/$', bar)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?
Die Lösung ist eigentlich recht einfach:

Code: Alles auswählen

if sys.argv[1].startswith("runserver"):
:P

siehe: https://github.com/jedie/PyLucid/commit ... 4a0eb76a3e

(Mensch... Seit 2007 vergessen...)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wieso `startswith`?
Benutzeravatar
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:

Code: Alles auswählen

if "runserver" in sys.argv:
Damit muß man auch nicht testen ob sys.argv >= 2 ist...


...oder?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

jop
Benutzeravatar
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
:P

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten