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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wie HTTP multipart/byteranges effektiv einlesen?

Beitragvon Joghurt » Samstag 7. Januar 2006, 18:22

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=]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..][/code]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?
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Samstag 7. Januar 2006, 21:12

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
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 7. Januar 2006, 22:02

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]