2010-08-21 17 views
6

Je voudrais faire un travail cron toutes les 10 minutes, mais mon système ne fait que 1 heure. Donc je cherche une méthode pour le faire. J'ai vu Timer et sleep mais je ne suis pas sûr de savoir comment faire cela ou même mieux encore une ressource pour y parvenir.Comment faire Ruby exécuter une tâche toutes les 10 minutes?

+0

Comment saurez-vous quand ils auront fini de danser? (http://en.wikipedia.org/wiki/Minuet) – JasonFruit

+0

Il n'y a pas d'équipe de tournage, mais essentiellement ce que ça fait, c'est d'ajouter des flux rss et il y a un attribut 'entries_total' qui est mis à jour et indique le nombre total de flux qui arrivent ajoutée. – s84

Répondre

4

Jetez un oeil à http://rufus.rubyforge.org/rufus-scheduler/

rufus-ordonnanceur est un bijou Ruby pour les pièces de planification de code (emplois). Il comprend l'exécution d'un travail à un certain moment, dans un certain temps, chaque fois x fois ou simplement via une déclaration CRON. rufus-scheduler ne remplace pas cron/at car il fonctionne à l'intérieur de Ruby.

+0

semble que cela pourrait fonctionner. Je reviendrai là-dessus. – s84

+0

Je ne l'ai pas utilisé moi-même, mais j'en ai pris quelques idées en créant un planificateur de tâches avec node.js. Le code semble bon et je pense que cela fonctionnerait pour vous. Aussi: http://adam.heroku.com/past/2010/4/13/rethinking_cron/ – grm

+0

Je vois que cet article mentionne aussi: http://github.com/bvandenbos/resque-scheduler – grm

2

Pour ce faire de manière fiable, investissez dans un VPS et créez le travail cron de 10 minutes comme vous le souhaitez. Essayer d'imiter Cron tout seul est très susceptible d'échouer de façon imprévue.

La création d'un processus de sommeil n'est pas la meilleure façon de procéder; Si votre serveur ne vous donne pas la liberté de créer votre propre cron comme vous l'aimez, vous ne pouvez probablement pas créer votre propre processus d'arrière-plan pour ce genre de chose non plus. Vous pourriez être en mesure, à chaque demande, de jeter un coup d'œil et de voir combien de tâches ont été effectuées (si la dernière requête datait de 25 minutes, vous devrez peut-être en faire deux), et de les faire rétroactivement.

Mais, sérieusement. Vous avez besoin de votre propre serveur pour le faire de manière fiable.

+0

aucune raison de réimplémenter la roue, surtout compte tenu de la façon dont cron largement utilisé, robuste et mature est. +1 –