Eigene WSGI Klasse

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

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 :(
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

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
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

Ja, eigentlich soll man das verwenden, was andere dafür geschaffen haben... Aber ich will eben mich mal selber an sowas versuchen :-\
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

self != self. Dir fehlen da Grundlagen...
TUFKAB – the user formerly known as blackbird
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

Hi,
ja... Habs schon hinbekommen.
gummibaerchen
User
Beiträge: 51
Registriert: Samstag 7. Oktober 2006, 15:13

shafire hat geschrieben:Hi,
ja... Habs schon hinbekommen.
:?:
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

Mein Code war fürn Arsch ;D Hab mich bisschen eingelesen, nun gehts =)
gummibaerchen
User
Beiträge: 51
Registriert: Samstag 7. Oktober 2006, 15:13

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 :)
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

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...
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

shafire hat geschrieben:http://paste.pocoo.org/show/908/
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? ;)
shafire
User
Beiträge: 7
Registriert: Mittwoch 31. Januar 2007, 23:02

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?
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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]
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Nein, es gibt keinen Syntaxfehler. Was wäre daran "implizit"?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Implizit wäre, dass die Klasse von object erbt. Explizit wäre, das dranzuschreiben (was, zugegeben, aber etwas lästig sein kann).
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Es ist lästig... deswegen wird es auch ohne "object" funktionieren.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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'>,)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Das object kann man mit python 2 auch schon weglassen, wenn man __metaclass__ = type in das modul schreibt.
TUFKAB – the user formerly known as blackbird
Antworten