Versenden großer Daten im Zusammenhang mit Django Webserver

Django, Flask, Bottle, WSGI, CGI…
Antworten
WbSrvr
User
Beiträge: 4
Registriert: Dienstag 1. Februar 2022, 06:19

Hallo Zusammen,

ich bin Anfänger bei der Verwendung von Webframeworks und möchte bevor ich mich ans Programmieren setze gerne eine Frage stellen.

Ich möchte ein Server/Client-System, das im Moment aus den socketserver Modulen gebaut ist, und per TCP Daten versendet, als Django Webserver „aufrüsten“ um die Vorteile zu nutzen. Der „Server“ ist ein Rechner der in einem Firmennetzwerk hängt und auch nicht weit weg von den Client Rechnern (jeweils ein PC = 1 Client) steht.
Dabei soll von mehreren PCs aus Anfragen an einen Server gestellt werden können, der dann Bildverarbeitungsoperationen durchführt und die Ergebnisse wieder zurückschickt. Die Anfragen und Antworten würde ich mit den Standard http-Methoden (POST, GET etc..) realisieren.
Dazu müssen unter anderem auch Videodateien gesendet werden, die auch gut und gerne mal 2 Gigabyte haben können. Jetzt zu meiner Frage:

Wie würdet ihr das Senden dieser großen Daten realisieren? (Daten müssen nur schnell und richtig ankommen, Sicherheit ist nicht so großgeschrieben, da im Firmennetz)
Kann man das mit Standard Methoden machen? Wenn ja Würdet ihr das empfehlen?


Ich würde mich über eine Antwort freuen.
Vielen Dank und Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@WbSrvr: Grundsätzlich sollte das einfach mit den Standard-HTTP-Methoden gehen. Man muss wegen der Grösse natürlich aufpassen, dass alle beteiligten entsprechend konfiguriert sind, also nicht irgendwo eine Dateigrössenbegrenzung konfiguriert ist. Und man muss bei den Grössen den Code so schreiben, dass nicht irgendwo die komplette Datei erst im Arbeitsspeicher gepuffert wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

In Django kann man das über StreamingHttpResponse bzw. FileResponse abbilden. Dann wird nicht die gesamte Datei in den Speicher geladen. Ich weiß nicht, ob das immer so sinnvoll ist, aber es sollte funktionieren. Im Zweifel müssen nur genügend Worker bereitstehen, weil so ein Response immer einen Worker blockiert. Die verlinkte Doku hat da mehr Details.
WbSrvr
User
Beiträge: 4
Registriert: Dienstag 1. Februar 2022, 06:19

Danke euch erstmal für die schnelle Hilfe.
Ich sehe also, dass es durchaus Möglichkeiten gibt.
Vielleicht kennt noch jemand eine andere Möglichkeit? Dann gerne bescheid geben !
Grüße
WbSrvr
User
Beiträge: 4
Registriert: Dienstag 1. Februar 2022, 06:19

einfachTobi hat geschrieben: Dienstag 1. Februar 2022, 14:51 In Django kann man das über StreamingHttpResponse bzw. FileResponse abbilden. Dann wird nicht die gesamte Datei in den Speicher geladen. Ich weiß nicht, ob das immer so sinnvoll ist, aber es sollte funktionieren. Im Zweifel müssen nur genügend Worker bereitstehen, weil so ein Response immer einen Worker blockiert. Die verlinkte Doku hat da mehr Details.
hallo, danke für deine Antwort. Bei meinem Fall müsste der Client an den Server große daten schicken, das wäre dann

HttpRequest.FILES

oder?

Danke dir! :)
Antworten