2016-05-21 22 views
1

Ich habe seit einiger Zeit den Aufbau einer Website, und ich bin immer noch mit dieser Sache stecken:Tornado Python - Streamen eines Videos

speichere ich ein paar kleine Videos (~ 400 MB ca. besten.) Für meine Website innerhalb einer dbm-Datenbank, und ich möchte sie auf meiner Website streamen.

Ich baue die Request-Handler von Hand mit dem Tornado-Python-Framework, und ich fragte mich, wie ich meine Handler erstellen. Ich habe nie herausgefunden, wie der Media Stream funktioniert und hat nicht viele Themen im Web gefunden.

Also das vollständige Ergebnis, das ich erreichen möchte, ist mit einem Web-Player auf meiner Website, wo ich bestimmte Videos anfordern kann, dann spielt sie ohne die gesamte Datei im Speicher laden/senden Sie es in 1 Anfrage.

+0

[Bereich Anfragen] (https://tools.ietf.org/html/rfc7233) –

Antwort

1

Diese beiden Verbindungen:

  • One for Tornado only: dies erscheint spezielle Anmerkungen zu verwenden.
  • One for Flask: obwohl ein Motion-JPEG-Beispiel zeigt, wie Sie
    eine Funktion zurückgeben können, die eine "while" -Schleife als Antwort ausführt.

scheinen die Antworten zu sein, die Sie suchen. Und rate was? Ich auch!

Beachten Sie, dass beide das Schlüsselwort "Yield" in Python verwenden. Es ist mir unklar, ob die "Coroutine" und "asynchronen" Dekoratoren im Flask-Beispiel notwendig sind (mit anderen Worten, es ist unklar, ob das Beispiel in der Verknüpfung vollständig ist ... obwohl er das Buch buchstäblich darüber geschrieben hat , also vermute ich es ist).

Vorsicht: Tests zeigen, dass tornado.web die GESAMTE Datei während des Downloads festhält, selbst wenn Sie sie streamen (z. B. lesen, schreiben, löschen, lesen ...). Der Grund dafür ist unklar, und ich muss noch einen Weg finden.