Seite 1 von 1

Wie HTTP multipart/byteranges effektiv einlesen?

Verfasst: Samstag 7. Januar 2006, 18:22
von Joghurt
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?

Verfasst: Samstag 7. Januar 2006, 21:12
von mitsuhiko
Bei colubrid nutz ich da email.message_from_string: http://wsgiarea.pocoo.org/trac/browser/ ... est.py#L67

Was besseres hab ich noch nicht.

Verfasst: Samstag 7. Januar 2006, 22:02
von Joghurt
OK, dann muss ich das wohl von Hand machen. :(