Предположим, у меня есть поток байтов с в нем следующее:Как построить webob.Request или WSGI 'environment' dict из необработанного потока байтов HTTP-запроса?
POST /mum/ble?q=huh Content-Length: 18 Content-Type: application/json; charset="utf-8" Host: localhost:80 ["do", "re", "mi"]
Есть ли способ, чтобы произвести WSGI стиле «окружат» Dict от него?
Надеюсь, я пропустил простой ответ, и его так же легко достичь, как и противоположная операция. Рассмотрим:
>>> 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, спасибо, он работает как рекламируемый. И я также опрокинул это снова через webob.Request .__ str__ и получил ожидаемые результаты (минус версия HTTP, класс запроса которой по какой-то причине не создается). –
Я подозреваю, что «self.server = self» приводит к утечке памяти. Поэтому было бы неплохо, после выполнения «handler = FakeHandler (...)», чтобы сделать «del handler.server». – offby1
@ offby1, эталонный цикл (который создает 'self.server = self') не является утечкой памяти, поскольку у Python есть сбор мусора для опорных циклов; если вы можете запрограммировать разрыв, это будет очень быстро ускорить процесс, избегая прохода 'gc'. –