Ich versuche, eine Datei von einem Remote-Speicher-Dienst (nicht s3 :-)) auf den Client mit Ruby on Rails 4.2 zu streamen.Stream Remote-Datei zum Client in Ruby/Rails 4/Einhorn/Nginx
Mein Server muss in der Mitte der Dinge bleiben, um die Clientanforderung zu authentifizieren, aber auch um die Anforderung an den Remotespeicherdienst zu erstellen, da alle Anforderungen an diesen Dienst mit einem benutzerdefinierten Headerparam authentifiziert werden müssen. Dies macht es nicht möglich, eine einfache redirect_to zu machen und den Client direkt die Datei herunterladen zu lassen (aber lassen Sie mich wissen, ob dies tatsächlich mit Rails möglich ist!). Ich möchte auch die URL der Datei für den Client verborgen halten.
Bis jetzt verwende ich ein Juwel namens ZipLine, aber das funktioniert auch nicht, da es immer noch die Remote-Datei zwischenspeichert, bevor sie an den Client gesendet wird. Da ich ein Unicorn/nginx verwende, kann dies auch auf eine Einstellung in einem der beiden zurückzuführen sein, die ein ordnungsgemäßes Streaming verhindert.
Wie pro Schiene doc Anweisungen habe ich versucht, das Hinzufügen
listen 3000, tcp_nopush: false
/unicorn.rb config, aber ohne Erfolg.
Eine Lösung könnte sein, die Remote-Datei lokal für einen bestimmten Zeitraum zwischenzuspeichern und nur diese Datei zu bedienen. Dies würde einige Dinge leichter machen, aber auch neue Kopfschmerzen wie das Erstellen der Remote-und Cache-Dateien synchron zu halten, Setzen des rechten Trigger für Cache Ablauf usw.
So zusammenzufassen:
1) Wie kann ich erreichen das obige Szenario?
2) Wenn dies keine intelligente/effiziente Methode ist, sollte ich einfach eine Remote-Kopie zwischenspeichern?
3) Was sind Ihre Erfahrungen/Empfehlungen im gegebenen Szenario?
Ich bin auf verschiedene Lösungen im Interweb gestoßen, aber keine inspirieren eine vollständige Lösung.
Danke!
Hallo Corstiaan, du hast wahrscheinlich schon eine Lösung gefunden. Ich habe das gleiche Problem. hier ist mein Thread: https://stackoverflow.com/questions/45714918/download-as-attachment-not-streaming Aber in Bezug auf Zipline funktioniert es wirklich im laufenden Betrieb für mich. Ich arbeite mit Büroklammer und S3 – Maxence