Obsługa porcjowanego kodowania HTTP za pomocą django
Mam problem z obsługą kodowania transferu opartego na http.
Używam:
apache.wtyczka mod_wsgi.django.django jest w stanie obsłużyć tylko żądanie HTTP reqular z polem nagłówka o długości zawartości, ale jeśli chodzi o obsługę TE (Transfer-Encoding), chunked lub gzip, zwraca pusty wynik.
Myślę o 2 podejściach:
Dokonanie pewnych modyfikacji w pliku python django.wsgiDodaj jakiś plik Pythona oprogramowania pośredniego do django, aby przechwycić dowolne fragmentowane żądanie http, przekonwertuj je na żądanie http z polem nagłówka treści, a następnie przekaż je do django, gdzie będzie w stanie je obsłużyć.Każdy może pomóc w każdej z powyższych 2 opcji (oczywiście więcej opcji jest mile widziane)
Dzięki!
To jest rozszerzenie mojego pytania po pierwszym odpowiedzi Grahama:
Przede wszystkim dzięki za szybką odpowiedź. Używanym klientem jest Axis, który jest częścią systemu innej firmy komunikującego się z naszym. miałemWSGIChunkedRequest On
ustawiłem również kilka modyfikacji w moim opakowaniu wsgi w następujący sposób:
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)
ale daje mi te błędy (wydobyte z pliku error.log apache):
[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
Co ja robię źle?!