2016-04-21 5 views
0

Ich erstelle eine einfache API, die auf Heroku gehostet wird, um Video-Uploads von Remote-Clients (mobile Anwendungen) zu verarbeiten, die derzeit Daten von einer Django-basierten API verwenden.Video-Uploads zu S3 über Django-basierte API

Ich brauche den Video-Dateinamen/URL, um sowohl unverständlich als auch einzigartig zu sein.

ich mehrere Ansätze nehmen könnte:

1) Stellen Sie die Django-basierten API mir einen einzigartigen und obskuren Dateinamen zu geben, um das Video direkt auf S3 mit dem Dateinamen lade, dann schreiben Sie ein Upload Status-Update an den API .

2) Laden Sie das Video direkt von der mobilen App auf S3, senden Sie eine Anfrage an die API mit Videodetails, die dann eine Aufgabe zum Umbenennen des Video-Dateinamens auf S3 erzeugt und das Video-URL-Attribut in meinem Django-Modell aktualisiert.

3) Veröffentlichen Sie das Video direkt in der API, um die Datei zu benennen und nach S3 zu laden.

In dem möglichen Fall, dass ich das Video vor dem Hochladen auf S3 in Zukunft verarbeiten muss, würde der erste und zweite Ansatz erfordern, dass der Server das Video, das bereits auf S3 hochgeladen wurde, herunterlädt und dann verarbeitet erneut auf S3 hochladen.

Was wäre die empfohlene Architektur in diesem Fall?

+1

https://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html – cdvv7788

Antwort

1

Sie haben ein paar Design-Optionen.

  1. Wenn Sie direkt auf S3 laden vor der Verarbeitung, hier ist ein guter Artikel über Python direkt auf Ihren Eimer hochladen: https://devcenter.heroku.com/articles/s3-upload-python

    Sie einen eigenen Task-Server (oder Lambda) wollen würde um einen separaten Job auszulösen, um Ihre Videoverarbeitung zu verarbeiten. So bleibt Ihre Website unbelastet und schnell. Sie wollen eine Warteschlange (SQS in AWS) für Maßstab nutzen.

  2. Alternativ können Sie Ihre Web-Server die ganze Arbeit machen: den Download, Verarbeitung und s3-Upload.

Der zweite Ansatz ist einfacher, aber nicht so gut Web-Server-Last handhaben, wird es auch teurer maßstäblich sein.

Ich schlage den ersten Ansatz vor, mit dem s3 Ihren Upload, Lambda und einen SQS verarbeiten kann, um Ihre Verarbeitung zu verarbeiten, und Ihr Webserver bleibt hell. Ein bisschen mehr Entwicklung als nicht linear, sondern sollte billiger sein, zu skalieren und zu einer besseren Leistung und Reaktionszeit für den Benutzer zur Verfügung stellen.

+0

Vielen Dank. Das ist nützlich. Ich habe die Frage aktualisiert, um mehr auf eine Architekturempfehlungsanfrage zu zielen, eher auf eine bestimmte Technologie, da sie auf Eis gelegt wurde. – user1889776