Je construis une application Ruby On Rails qui accèdent à 6-7 API, vous accélérez les informations basées sur les entrées de l'utilisateur, comparent et affichent les résultats aux utilisateurs (les informations ne sont pas enregistrées dans la base de données). Je vais utiliser Heroku pour déployer l'application. Je voudrais que ces demandes HTTP accéder à l'API soient effectuées en parallèle, de sorte que la réponse est meilleure au lieu de le faire séquentielle. Selon vous, quelle est la meilleure façon de y parvenir chez Heroku? P>
Merci beaucoup pour toutes les suggestions! P>
4 Réponses :
Jetez un coup d'œil à la création de chaque demande en tant que travail d'arrière-plan: http://blog.heroku.com/archives/2009/7/15/ fond_jobs_with_dj_on_heroku / p>
Plus les "travailleurs" achètent d'Heroku, plus les travaux d'information peuvent être traités simultanément, laissant ainsi vos "Dynos" pour servir vos utilisateurs. P>
Le problème de le faire comme un travail en arrière-plan est que DJ enregistre les travaux en attente dans la base de données. Les processus sont donc ajoutés à la file d'attente, puis l'utilisateur doit attendre que l'un des travailleurs interroge la base de données pour voir quel travail attend votre travail et alors il est exécuté. Ainsi, en plus du temps d'attente pour interroger les API, j'ajoute du temps d'attente jusqu'à ce que les travailleurs commencent le travail. C'est pourquoi je pense que ce n'est pas la meilleure option .. Mais je pourrais me tromper.
Comme alternative, vous pouvez utiliser typhoeeus ( github.com/pauldix/typhoeus ) pour exécuter les demandes de parallèle.
Vous pouvez toujours rendre les demandes côté client à l'aide de JavaScript. Ensuite, non seulement vous pouvez les exécuter en parallèle, mais vous n'aurez même pas besoin de l'aller-retour sur votre propre serveur. P>
Nous ne pouvons que sauter le voyage aller-retour si nous n'avons pas besoin d'une sorte de clé API, correct? Sinon, nous devons d'abord aller sur le serveur car nous ne pouvons pas stocker la clé de l'API sur le client.
Je n'ai pas essayé de paralleraliser des demandes comme ça. Mais j'ai essayé parallèlement sur Herellu, travaille comme un charme! Ceci est mon article de blog simple à ce sujet. p>
Si vous souhaitez effectuer les demandes du côté serveur (la solution JavaScript du TFE est une bonne idée), votre meilleur choix utiliserait EventMachine . Utiliser EventMachine donne un moyen simple de ne pas bloquer io.
Découvrez également em-synchrony pour un ensemble de Ruby 1.9 Conscient de fibres Caids (y compris HTTP). P>
Tout ce que vous avez à faire pour une requête HTTP non bloquante est quelque chose comme: p> Goodluck! p> p>