Supposons que j'ai un flux d'octets avec ce qui suit dans le:Comment construire une requête webob.Request ou une instruction WSGI 'environ' à partir d'un flux d'octets de requêtes HTTP brutes?
POST /mum/ble?q=huh Content-Length: 18 Content-Type: application/json; charset="utf-8" Host: localhost:80 ["do", "re", "mi"]
est-il un moyen de produire un style WSGI « environ » dict de celui-ci? Heureusement, j'ai oublié une réponse facile, et il est aussi facile à réaliser que l'opération inverse. Tenir compte:
>>> 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, merci, ça marche comme annoncé. Et j'ai aussi retourné cette dictée à nouveau via webob.Request .__ str__ et j'ai obtenu les résultats attendus (moins la version HTTP, quelle classe Request ne produit pas pour une raison quelconque). –
Je suspecte que le "self.server = self" mène à une fuite de mémoire. Par conséquent, ce serait une bonne idée, après avoir fait "handler = FakeHandler (...)", de faire "del handler.server". – offby1
@ offby1, une boucle de référence (que self.server = self' crée) n'est pas une fuite de mémoire, car Python a une récupération de place pour les boucles de référence; Si vous pouvez casser la boucle à bon escient, cela accélérera les choses en évitant la passe 'gc'. –