2011-03-06 4 views
2

J'ai une action dans laquelle j'envoie une requête à un service Web. Le service Web prend FOREVER pour répondre et mes utilisateurs attendent des années pour obtenir une réponse de notre part.Tâche différée/asynchrone avec Rails

La page Web que je montre à l'utilisateur NE dépend PAS de la réponse du service Web. Je souhaite que ma demande au service Web soit différée/asynchrone afin que mes utilisateurs n'aient pas à attendre l'aller-retour vers le service Web.

Que dois-je faire? Quelle est la meilleure façon de gérer cela?

Merci pour votre aide!

Répondre

6

Découvrez https://github.com/defunkt/resque. C'est une bibliothèque d'emplois retardée pour faire exactement ce dont vous avez besoin. Construit par l'un des fondateurs Github et beaucoup de gens sont connus pour l'utiliser.

Une alternative serait https://github.com/collectiveidea/delayed_job

+2

Notez que collective_idea sur Github a maintenu DelayedJob depuis un certain temps maintenant. Et en toute honnêteté, * DelayedJob * est probablement mieux adapté pour le cas simple, il semble que Harry a ici. Resque est (et ils l'indiquent) pour quand vous avez besoin de performance, plusieurs files d'attente, etc. – coreyward

+1

Bon point. L'adresse URL du bon report de travail est https://github.com/collectiveidea/delayed_job –

+0

Vous avez probablement raison sur l'instruction DJ vs Resque, bien que la courbe d'apprentissage pour resque ne soit pas trop mauvaise. –

Questions connexes