2013-04-15 2 views
2

Y a-t-il une bibliothèque simple qui me permettra de programmer une tâche très simple toutes les x secondes spécifiées par la requête web?Comment faire un appel de méthode toutes les x secondes?

Je cherche quelque chose le long des lignes de:

Something.after(5) { call_method } 

Très simple. Dois-je installer une bibliothèque comme resque, ou y a-t-il une bibliothèque capable de gérer cela? Je ne suis pas à la recherche d'un traitement complet de la file d'attente d'arrière-plan, juste un simple appel de méthode après x nombre de secondes. Je sais à propos de resque et sidekiq ...

Je dois exécuter cela à partir de Rails ou Sinatra.

+2

Décrivez ce que vous entendez par « spécifié par la demande Web à venir dans ». Autoriser une requête Web entrante à déclencher automatiquement un travail qui se répète toutes les X secondes est un bon moyen de permettre à quelqu'un de DOS votre système, le rendant rapidement indisponible et inutilisable. Avez-vous une protection contre cela? Configurer un thread qui s'exécute sur des intervalles ne serait pas difficile. Éviter les demandes fausses/répétées est plus difficile. –

+1

Peut-être que le joyau [Whenever] (https://github.com/javan/whenever) est ce que vous cherchez? Je ne sais pas si vous comptez cela comme un «traitement de file d'attente d'arrière-plan complet» ou non (probablement le faire). – aceofbassgreg

+0

En plus des autres commentaires, si vous hébergez l'application sur un service tel que Heroku, vous devrez prendre en compte les restrictions qu'ils ont pour de tels cas. Dans le cas spécifique de Heroku, vous devrez utiliser Delayed Job (DJ) pour ça, AFAIK. – fmendez

Répondre

3

récrire Peut-être votre exemple de code:

Something.after(5) { call_method } 

à:

Something 
Thread.new do 
    sleep(5) 
    call_method 
end 
0

Il serait préférable d'expédier ceci à une tâche de fond, jetez un oeil à resque-scheduler & Resque. Il y a aussi un bon Railscast qui vaut le détour. Toute autre chose comme l'utilisation de crons ne serait pas juste.

Je n'ai trouvé ce petit bijou (sucker_punch) qui ressemble à ce serait faire ce que vous avez besoin

Questions connexes