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
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? ;)

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.