Envois multiples à Amazon S3 de Ruby on Rails - Quel système arrière-plan traitement à utiliser?
-
12-09-2019 - |
Question
Je développe une application Ruby on Rails qui doit permettre à l'utilisateur de télécharger simultanément 16 images de haute qualité à la fois.
Cela signifie souvent quelque part autour de 10-20 méga-octets (parfois plus), mais il est le nombre de connexions qui deviennent la question la plus pertinente.
Les images sont envoyées à Amazon S3 de Paperclip, qui ouvre et ferme malheureusement une nouvelle connexion pour chacun des 16 fichiers. Inutile de dire que je dois déplacer le système pour exécuter les processus d'arrière-plan pour garder mon serveur web de se bloquer comme il est déjà sans trafic.
Ma question est, de tous les systèmes à base de Rails à utiliser pour les travaux de fond (Starling, BackgroundRb, Spawn, etc.), s'il y a un qui pourrait correspondre à la facture pour ce scénario mieux que les autres (I » m de nouveau à la construction d'un système en le fond de toute façon, de sorte que tous les systèmes disponibles sont tout aussi nouveau pour moi)?
La solution
Il ne manque pas de plug-ins de rails pour faire du traitement async, et essentiellement tous fonctionnent très bien. Personnellement, j'aime de Delayed Job 's api mieux.
Je ne voudrais pas utiliser Starling ou d'autres daemons de file d'attente réelle depuis cette tâche en utilisant la base de données pour stocker tout état nécessaire devrait être très bien.
Autres conseils
Cela peut aider!
EDIT:
Il est impossible, par un formulaire de multipart HTML normale, pour envoyer des fichiers à l'arrière-plan. Ils doivent être fait par cette demande. Si vous cherchez un moyen de contourner cela, vous pouvez essayer SWFUpload puis une fois que cela est fait appel à un processus d'arrière-plan pour gérer les téléchargements Amazon S3.
est aussi un bon poste blog de l'enquête
J'aime SWFUpload, nous l'utilisons sur certaines applications S3 que nous écrivions. Il est prouvé être très rapide et stable. Vous pouvez avoir des actions décocha via Ajax après les téléchargements, etc ... Nous avons eu une tonne de téléchargements passent par 0 avec des échecs.