Umgang mit HTTP-Chunked-Codierung mit Django

Ich habe ein Problem beim Umgang mit http-Chunked-Transfer-Codierung.

Ich benutze:

Apache.mod_wsgi plugin.Django.

django ist nur in der Lage, eine entsprechende http-Anfrage mit einem inhaltslangen Header-Feld zu verarbeiten. Wenn es jedoch um die Verarbeitung von TE (Transfer-Encoding), Chunked oder Gzip geht, wird ein leeres Ergebnis zurückgegeben.

Ich denke an 2 Ansätze:

Nehmen Sie einige Änderungen an der Python-Datei django.wsgi vorFügen Sie Django eine Middleware-Python-Datei hinzu, um eine blockierte http-Anfrage abzufangen, konvertieren Sie sie in eine erforderliche http-Anfrage mit einem inhaltslangen Header-Feld und übergeben Sie sie dann an Django, wo sie problemlos verarbeitet werden kann.

Jeder kann mit einer der beiden oben genannten Optionen helfen (weitere Optionen sind natürlich sehr willkommen).

Vielen Dank!

Dies ist eine Erweiterung meiner Frage nach Grahams erster Antwort:

Zunächst einmal vielen Dank für Ihre schnelle Antwort. Der verwendete Client ist Axis, ein Teil des Systems eines anderen Unternehmens, das mit unserem kommuniziert. ich hatteWSGIChunkedRequest On Ich habe auch einige Änderungen an meinem wsgi-Wrapper vorgenommen:

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)

aber es gibt mir diese Fehler (aus der error.log-Datei von Apache extrahiert):

[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

Was mache ich falsch?!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage