Angenommen ich ein Byte-Stream in es mit der folgenden haben:Wie erstellt man ein webob.Request oder ein WSGI 'environ' dict aus dem HTTP-Request-Byte-Stream?
POST /mum/ble?q=huh Content-Length: 18 Content-Type: application/json; charset="utf-8" Host: localhost:80 ["do", "re", "mi"]
Gibt es eine Möglichkeit, eine WSGI-Stil ‚environ‘ dict daraus zu produzieren?
Hoffentlich habe ich eine einfache Antwort übersehen, und es ist so einfach zu erreichen wie die umgekehrte Operation. Bedenken Sie:
>>> import json
>>> from webob import Request
>>> r = Request.blank('/mum/ble?q=huh')
>>> r.method = 'POST'
>>> r.content_type = 'application/json'
>>> r.charset = 'utf-8'
>>> r.body = json.dumps(['do', 're', 'mi'])
>>> print str(r) # Request's __str__ method gives raw HTTP bytes back!
POST /mum/ble?q=huh Content-Length: 18 Content-Type: application/json; charset="utf-8" Host: localhost:80 ["do", "re", "mi"]
Alex, danke, es funktioniert wie beworben. Und ich habe dieses Diktat erneut über webob.Request .__ str__ gerundet und die erwarteten Ergebnisse erhalten (minus HTTP-Version, die Request-Klasse aus irgendeinem Grund nicht erzeugt). –
Ich vermute, dass der "self.server = self" zu einem Speicherleck führt. Daher wäre es eine gute Idee nach "handler = FakeHandler (...)" "del handler.server" zu machen. – offby1
@ offby1, eine Referenzschleife (die 'self.server = self' erzeugt) ist kein Speicherleck, da Python eine Speicherbereinigung für Referenzschleifen hat; Wenn Sie die Schleife absichtlich brechen können, wird das die Dinge beschleunigen, indem Sie den 'gc'-Pass vermeiden. –