Seite 1 von 2
Eigene WSGI Klasse
Verfasst: Mittwoch 31. Januar 2007, 23:04
von shafire
Hallo,
ich versuche gerade meine eigene WSGI Klasse zu schreiben, aber ich scheitere schon daran...
Code: Alles auswählen
from typments import RegexApplication, HttpResponse
class Application(RegexApplication):
def testprint(self):
return HttpResponse('asd')
typments = Application
Code: Alles auswählen
from typments.application import RegexApplication
from typments.response import HttpResponse
Code: Alles auswählen
class RegexApplication(object):
def __init__(self, environ, start_response):
self.environ = environ
self.start = start_response
def __call__(self):
self.testprint()
return self
Code: Alles auswählen
class HttpResponse(object):
def __init__(self, html):
status = '200 OK'
response_headers = [('Content-type', 'text/html')]
self.start(status, response_headers)
yield html
Ein bisschen abgeguckt von Colubrid ;-(. Aber es will nicht

Verfasst: Donnerstag 1. Februar 2007, 03:05
von EnTeQuAk
Warum verwendest du nich einfach Colubrid?
Es ist klein, fein und bietet eine Menge Features...
DENN... das, was du gemacht hast ist im Moment gar nichts.
Ich habe mir den Quelltext von Colubrid noch nicht so genau angeschaut... weiß aber, das der nicht nur aus 8 Zeilen besteht.
MfG EnTeQuAk
Verfasst: Donnerstag 1. Februar 2007, 13:42
von shafire
Ja, eigentlich soll man das verwenden, was andere dafür geschaffen haben... Aber ich will eben mich mal selber an sowas versuchen :-\
Verfasst: Freitag 2. Februar 2007, 07:32
von mitsuhiko
self != self. Dir fehlen da Grundlagen...
Verfasst: Freitag 2. Februar 2007, 14:07
von shafire
Hi,
ja... Habs schon hinbekommen.
Verfasst: Sonntag 4. Februar 2007, 15:14
von gummibaerchen
shafire hat geschrieben:Hi,
ja... Habs schon hinbekommen.

Verfasst: Sonntag 4. Februar 2007, 15:56
von shafire
Mein Code war fürn Arsch ;D Hab mich bisschen eingelesen, nun gehts =)
Verfasst: Sonntag 4. Februar 2007, 17:03
von gummibaerchen
shafire hat geschrieben:Mein Code war fürn Arsch ;D Hab mich bisschen eingelesen, nun gehts =)
Cool.
Wenn du magst, darfst du den Post auch hier (oder vllt besser im paste.pocoo.org) posten.
Haut dich keiner für, versprochen, und ich würde mich vllt sogar freuen

Verfasst: Sonntag 4. Februar 2007, 17:11
von shafire
http://paste.pocoo.org/show/908/
Das hab ich bis jetzt. Nur die Ausgabe! Will mich später noch in GET/POST/REQUEST einlesen.
Fehlt ja noch viel

z.b. Status Code Rückgabe, Path-Info auslesen, damit das richtige zurückgegeben werden kann...
Verfasst: Montag 5. Februar 2007, 15:23
von Y0Gi
Ich empfehle, "new-style-Klassen" zu verwenden, sprich solche, die von object erben. Die haben ihre Vorteile und bei den alten weiß man nie, wann Guido die plötzlich doch noch rauskegelt
shafire hat geschrieben:Nur die Ausgabe! Will mich später noch in GET/POST/REQUEST einlesen.
Du hast bisher PHP benutzt, hm?

Verfasst: Montag 5. Februar 2007, 21:31
von shafire
Ich empfehle, "new-style-Klassen" zu verwenden, sprich solche, die von object erben. Die haben ihre Vorteile und bei den alten weiß man nie, wann Guido die plötzlich doch noch rauskegelt Wink
Was meinst du damit? Hast du da ein Beispiel?
Verfasst: Montag 5. Februar 2007, 22:32
von sape
shafire hat geschrieben:
Was meinst du damit? Hast du da ein Beispiel?
Code: Alles auswählen
# Newstyle
class Foobar(object):
pass
# != Newstyle
class Foobar:
pass
[wiki]New-Style Klassen[/wiki]
Verfasst: Montag 5. Februar 2007, 22:52
von birkenfeld
Wobei es, wenn man nichts außergewöhnliches (= deskriptoren, __getattribute__) mit der Klasse anstellen möchte, völlig egal ist, ob old-style oder new-style.
Und wenn old-style verschwindet (erst in Py3.0 übrigens), wird "class X:" sowieso new-style sein.
Verfasst: Dienstag 6. Februar 2007, 00:30
von Y0Gi
birkenfeld hat geschrieben:Und wenn old-style verschwindet (erst in Py3.0 übrigens), wird "class X:" sowieso new-style sein.
Ich gehe eher davon aus, dass es einen Syntaxfehler gibt, denn "explicit is better than implicit". Oder gibt es (anderslautende) Ankündigungen dazu?
Verfasst: Dienstag 6. Februar 2007, 08:13
von birkenfeld
Nein, es gibt keinen Syntaxfehler. Was wäre daran "implizit"?
Verfasst: Dienstag 6. Februar 2007, 11:41
von Y0Gi
Implizit wäre, dass die Klasse von object erbt. Explizit wäre, das dranzuschreiben (was, zugegeben, aber etwas lästig sein kann).
Verfasst: Dienstag 6. Februar 2007, 11:54
von birkenfeld
Es ist lästig... deswegen wird es auch ohne "object" funktionieren.
Verfasst: Mittwoch 7. Februar 2007, 11:56
von Y0Gi
self ist auch für viele lästig, aber der BFDL wollte es ja auch unbedingt haben
Trotzdem kann ich mir die Variante ohne zwingendes (object) gut vorstellen, lässt sich so doch alter Code unverändert übernehmen. Konflikte kann ich mir bei der Umstellung auf new-style-Klassen gerade nicht vorstellen.
Whatever, wird werden sehen.
Verfasst: Mittwoch 7. Februar 2007, 12:35
von birkenfeld
Y0Gi hat geschrieben:Whatever, wird werden sehen.
Das kann man heute schon sehen:
Code: Alles auswählen
Python 3.0x (p3yk:53654, Feb 7 2007, 12:33:48)
>>> class A: pass
...
>>> A.__bases__
(<type 'object'>,)
Verfasst: Mittwoch 7. Februar 2007, 14:55
von mitsuhiko
Das object kann man mit python 2 auch schon weglassen, wenn man __metaclass__ = type in das modul schreibt.