Colubrid WSGI Request Handler 0.8

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

OK, aber wo macht das Sinn??? Und reicht nicht doch ein normales Dict dafür?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hier:

Code: Alles auswählen

def get_form(self):
    return '\n'.join('<input type="checkbox" name="delete" value="%d">' % i for i on xrange(200))
Dann hast du eine Form aus 200 Checkboxen. Und für alle angeklickten bekommst du deren IDs mit request.GET.getlist('delete').
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Nagut, einen Anwenungsfall gibt es schon... Nur, es geht wie gesagt auch mit einem normalem Dict... :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Nich zwei andere Fragen:

1.) Mit self.request.exposed.append() kann man ja Daten zum Traceback hinzufügen... Aber in welcher Form müßen die vorliegen? Dürfen es nur Dicts sein?

2.) Der Standalone-Test-Server funktioniert bei mir übers Netz erst dann, wenn bei http://wsgiarea.pocoo.org/trac/browser/ ... te.py#L342
Es nicht:

Code: Alles auswählen

self.run_standalone(options.hostname or 'localhost',
sondern:

Code: Alles auswählen

self.run_standalone("",
steht. Ist das normal???

3.) Beim starten vom standalone-Test-Server kommt es immer zu einem Traceback, aber der Server läuft:
Traceback (most recent call last):
File "PyLucid_CGI_app.py", line 106, in ?
CGIServer(app, exports).run()
File "/daten/www/testing_Server/PyLucid_WSGI/colubrid/execute.py", line 111, in run
result = self.application(environ, start_response)
File "PyLucid_CGI_app.py", line 57, in __init__
super(PyLucid, self).__init__(*args)
File "W:\testing_Server\WSGIarea\colubrid\application.py", line 64, in __init__
File "W:\testing_Server\WSGIarea\colubrid\request.py", line 35, in __init__
File "W:\testing_Server\WSGIarea\colubrid\request.py", line 53, in get_full_url
File "W:\testing_Server\WSGIarea\colubrid\utils.py", line 292, in get_full_url
KeyError: 'SERVER_NAME'
Was ich aber überhaupt nicht verstehe, wie das Windows-Pfade im Traceback rein kommen können :shock:
Also ich starte den Server unter Linux! Zwar stimmen die Pfade theoretisch, weil die als Samba Freigabe so verfügbar sind, aber irgendwie macht das keinen Sinn :?:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Was ich aber überhaupt nicht verstehe, wie das Windows-Pfade im Traceback rein kommen können :Shocked:
Also ich starte den Server unter Linux! Zwar stimmen die Pfade theoretisch, weil die als Samba Freigabe so verfügbar sind, aber irgendwie macht das keinen Sinn
Doch. Die Pfade sind noch .pyc's die Du unter Windows kompiliert hast da drin. Lösch alle .pyc-s, und die Linux-Pfade tauchen auf.

--- Heiko.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Jup, das war es :roll:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab noch eine generelle Anmekrung zur Namenswahl. Warum heißt es überhaupt CGIServer in colubird?
Für mich ist ein Apache mit CGI ehr ein CGI-Server :lol:

Ich würde vorschlagen das ehr CGIbridge zu nennen. Denn es ist doch ehr eine Brücke zwischen dem ApacheCGIServer und der WSGI-Applikation. Oder vielleicht auch CGIAdapter...

EDIT:
Ich hab nochmal mit --hostname und --port gespielt... Leider funktioniert ein --hostname "" nicht.
Das liegt an options.hostname or 'localhost' Denn das Ergebniss ist 'localhost' wenn options.hostname = "" ist :)

Hier mal ein Vorschlag:

Code: Alles auswählen

Index: W:/testing_Server/PyLucid_WSGI/colubrid/execute.py
===================================================================
...
 class StandaloneServer(ThreadingMixIn, HTTPServer):
 
     def __init__(self, application, exports, hostname, port, noreload, quiet):
+        print "Starting standalone Server at '%s' port:%s" % (hostname, port)
         HTTPServer.__init__(self, (hostname, port), WSGIHandler)

...

class CommandlineApplication(object):
...
    def handle_parameters(self):
...

         if args[0] == 'runserver':
-            self.run_standalone(options.hostname or 'localhost',
+            if options.hostname == None: options.hostname = "localhost"
+            self.run_standalone(options.hostname,
                                 options.port or 8080, bool(options.no_reload),
                                 bool(options.quiet))

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

jens hat geschrieben:Ich hab noch eine generelle Anmekrung zur Namenswahl. Warum heißt es überhaupt CGIServer in colubird?
Für mich ist ein Apache mit CGI ehr ein CGI-Server :lol:
Ney. Eigentlich sollte es ja WSGIServer heißen, aber wenn zwei in einer Datei sind isses leicht komisch. Aber vielleicht bennen ichs wirklich um, bricht halt Kompatibilität.
Ich würde vorschlagen das ehr CGIbridge zu nennen. Denn es ist doch ehr eine Brücke zwischen dem ApacheCGIServer und der WSGI-Applikation. Oder vielleicht auch CGIAdapter...
Jup. Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.

Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
blackbird hat geschrieben:Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.
OK, dann müßte das irgendwo anders hin, aber generell ist eine Ausgabe IMHO ein muß!
Was ist mit der anderen Zeile???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

jens hat geschrieben:
blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
Find ich nicht. Ist ja ein Diener :-)
blackbird hat geschrieben:Und was deinen Patch angeht, würde man die Serverstart message bei jedem Code Reload sehen. Weil da startet er den Prozess einfach neu.
OK, dann müßte das irgendwo anders hin, aber generell ist eine Ausgabe IMHO ein muß!
Was ist mit der anderen Zeile???
Den fix mit dem hostname ANY werde ich einbauen.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

blackbird hat geschrieben:
jens hat geschrieben:
blackbird hat geschrieben:Ein eigener Server isses ja so nicht, aber da wrapper in der Regel WSGIServer heißen wollte ich da anknüpfen.
Dann finde ich die ursprüngliche Namenswahl nicht wirklich gelungen...
Find ich nicht. Ist ja ein Diener :-)
Dann nenn es meinetwegen CGIbutler, CGIservant oder irgendwie anders, aber nicht CGIServer... :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Noch eine Anmerkung zur Namenswahl... Zwar ist in der neuen Colubrid kein CGI-Server mehr drin, aber dennoch...

Wie im IRC "besprochen" redet PEP-0333 von nicht von CGI-Serber sondern von CGI-Gateway, das IMHO sehr gut passt...

Es sieht also so aus:

WebApp -> CGI-Handler -> CGI-Gateway -> Apache

Also lasst und bitte immer von CGI-Gateware sprechen, ja? :lol:

(Im übrigen hab ich mal die http://wiki.python.de/Colubrid/Hello_World überarbeitet und noch ein paar Anmerkungen hinzugefügt...)

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