Обработка чанкованного HTTP-кодирования с помощью django
У меня возникла проблема с переносом кодированного http-кодирования.
Я использую:
apache. mod_wsgi plugin. django.django способен обрабатывать только регулярный http-запрос с полем заголовка длины содержимого, но когда дело доходит до обработки TE (Transfer-Encoding), chunked или gzip, он возвращает пустой результат.
Я думаю о двух подходах:
Making some modification to django.wsgi python file Add some middleware python file to django, to intercept any chunked http request,convert it to requelar http request with content-length header field, then, pass it to django, where it can handle it nicely.Любой может помочь с любым из двух вышеуказанных вариантов (больше вариантов, конечно, приветствуются)
Спасибо!
Это продолжение моего вопроса после первого ответа Грэма:
Прежде всего, спасибо за ваш быстрый ответ. Используемым клиентом является Axis, который является частью системы другой компании, поддерживающей связь с нашей. я имелWSGIChunkedRequest On
установить, я также сделал некоторые изменения в моей оболочке wsgi, как это:
def application(environ, start_response):
if environ.get("mod_wsgi.input_chunked") == "1":
stream = environ["wsgi.input"]
print stream
print 'type: ', type(stream)
length = 0
for byte in stream:
length+=1
#print length
environ["CONTENT_LENGTH"] = len(stream.read(length))
django_application = get_wsgi_application()
return django_application(environ, start_response)
но это дает мне эти ошибки (извлеченные из файла apache error.log):
[Sat Aug 25 17:26:07 2012] [error] <mod_wsgi.Input object at 0xb6c35390>
[Sat Aug 25 17:26:07 2012] [error] type: <type 'mod_wsgi.Input'>
[Sat Aug 25 17:26:08 2012] [error] [client xxxxxxxxxxxxx] mod_wsgi (pid=27210): Exception occurred processing WSGI script '/..../wsgi.py'.
[Sat Aug 25 17:26:08 2012] [error] [client xxxxxxxxxxxxx] Traceback (most recent call last):
[Sat Aug 25 17:26:08 2012] [error] [client xxxxxxxxxxxxx] File "/..../wsgi.py", line 57, in application
[Sat Aug 25 17:26:08 2012] [error] [client xxxxxxxxxxxxx] for byte in stream:
[Sat Aug 25 17:26:08 2012] [error] [client xxxxxxxxxxxxx] IOError: request data read error
Что я делаю неправильно?!