Wie HTTP multipart/byteranges effektiv einlesen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Ich muss mehrere Teile einer Datei via HTTP einlesen, sagen wir mal die Bytes 10-20, 30-40, und 700-900.

Ich könnte nun natürlich für jeden Teil eine neue HTTP Anfrage starten, aber praktischerweise kann man bei Byteranges ja auch mehrere Teile gleichzeitig anfragen, die man dann als MIME multipart/byteranges geliefert bekommt.

Beispiel:

Code: Alles auswählen

GET /foo HTTP/1.1
...
Range: bytes=10-20,30-40,700-900

Antwort:
Date: Sat, 07 Jan 2006 17:18:25 GMT
Accept-Ranges: bytes
Content-Length: 547
Content-Type: multipart/byteranges; boundary=409c7f41da80316e8

--409c7f41da80316e8
Content-type: text/plain; charset=UTF-8
Content-range: bytes 10-20/3890

[...Daten...]
--409c7f41da80316e8
Content-type: text/plain; charset=UTF-8
Content-range: bytes 30-40/3890

[..usw..]
Die Frage ist jetzt: Wie komme ich mit Python effektiv an die einzelnen Daten ran? Eine Möglichkeit wäre, mittels email.message_from_file zu arbeiten. Die setzt nur leider vorraus, dass ich die gesamten Ergebnisse des Servers erst einlese, was unpraktisch ist (es können durchaus 100MB insgesamt werden)

Ich möchte ungern einen eigenen Handler schreiben müssen, der "on-the-fly" arbeitet. Hat jemand von euch eine Idee?
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Bei colubrid nutz ich da email.message_from_string: http://wsgiarea.pocoo.org/trac/browser/ ... est.py#L67

Was besseres hab ich noch nicht.
TUFKAB – the user formerly known as blackbird
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

OK, dann muss ich das wohl von Hand machen. :(
Antworten