10
votes

Est "retardé_job" de rails pour la tâche cron vraiment?

retarded_job est chez http://github.com/collectivedidea/delayed_job

peut retarder_job avoir la capacité de faire une tâche cron? Comme exécuter un script tous les soirs à 1h du matin. Ou exécuter un script toutes les 1 heure.

Sinon, quelles sont les gemmes appropriées qui peuvent faire cela? Et peut-il être surveillé à distance à l'aide d'un navigateur et avoir une journalisation de succès et d'erreur?


0 commentaires

6 Réponses :


4
votes

Je pense que cron est un meilleur outil pour cela que retardé_job. Je l'ai déjà utilisé dans un projet, et il excelle vraiment de courir à la tâche en arrière-plan ou à un moment donné. Mais, pour des tâches récurrentes qui se produisent à des heures régulières, je pense que Cron est le meilleur outil.

Consultez à chaque fois (et son RailsCast ) pour programmer facilement des travaux de cron pouvant exécuter des tâches Rake (ou Thor ou Shell Scripts, ou autre chose.) Vous pouvez utiliser le Tâches Rake pour mettre à jour vos modèles, puis avoir une sorte de contrôleur de tableau de bord qui regarde les différents statuts.


0 commentaires

21
votes

J'ai travaillé sur un projet qui a essayé d'utiliser retardedJob pour planifier des articles futurs. Il a sucé.

à la place je vous recommande d'utiliser le chaque fois que gem:

http://github.com/javan/whenever

Chaque fois qu'un gemme rubis qui fournit un Syntaxe claire pour définir des emplois cron. Il génère une syntaxe de cron valide et peut Même écrivez votre fichier crontab pour vous. Il est conçu pour bien fonctionner avec des rails applications et peut être déployé avec Capistrano. Chaque fois fonctionne bien indépendamment aussi.

code ressemble à ceci (de github) xxx

ici 'SA RailsCast vidéo sur la façon de l'utiliser.

et le asciicast .


3 commentaires

Pourquoi / comment retarded_job est-il sucé pour vous?


J'ai constaté que les travailleurs de DJ se gèrent constamment et ils étaient difficiles à continuer à courir. Je suis depuis passé à Sidekiq et je n'ai jamais regardé en arrière. C'est parfait. Fonctionne absolument fantasticement. J'aimerais que mon entreprise puisse chercher de l'argent pour la funtionalalité supplémentaire de Sidekiq pro juste parce que c'est tellement génial.


Ça suce. Je suis allé là aussi.



2
votes

Chaque fois que fonctionnent bien.

J'aime aussi Rufus-plancher code> p> xxx pré>

puis dans ce fichier: p>

scheduler = Rufus::Scheduler.start_new  

scheduler.every("1m") do  
   DailyDigest.send_digest!  
end 


0 commentaires

2
votes

i Exécutez plusieurs fois cron retarded_jobs pour la statistique nocturne et le rapport générant ainsi que pour le décalage de données à certains intervalles. Voici comment je le fais:

https://aaronvb.com/articles/recurringing-Delayed -Job-with-cron.html


0 commentaires

3
votes

Vous pouvez également utiliser le gemmatométrique: https://github.com/adamwiggins/clockwork-rails-dj

Clockwork fonctionne comme un démon séparé et peut être utilisé pour déclencher des travaux de n'importe quelle sorte qui soit ajouté à un système de file d'attente d'emploi ou à courir immédiatement.

Utilisez retarded_job pour ce qu'il est bon, un système de file d'attente de travail pouvant être distribué sur plusieurs nœuds (ou non). Utilisez quelque chose d'autre pour ajouter des emplois à la file d'attente au bon moment.

J'utilisais le râteau (ou le coureur) / cron / chaque fois que GEM pour planifier des tâches d'arrière-plan mais que vous trouviez que ma charge de serveur était tellement élevée car je serais frappé constamment avec le râteau / le coureur en chargeant l'environnement des rails. Les travailleurs retardés_job sont vos rails daemons qui restent en cours d'exécution afin que vous ne tirez pas constamment des rails à chaque fois qu'une tâche de fond est requise.


0 commentaires

1
votes

J'ai créé un bijou pour cela:

https://github.com/sellect/delayed_cron

Cela fonctionne avec SIDECIQ et DeleDeD_Job actuellement. Cherche à ajouter de la rade bientôt. Je sais que c'est un peu tardif, mais cela fait exactement exactement ce que vous cherchiez.


2 commentaires

Le deled_crarr Gem n'a pas fonctionné correctement avec retarded_job depuis au moins 2014-03-06. Même après la fixation de DeleDecron :: Emploi :: Delieredjob # Effectuer la gemme ne fonctionne toujours pas correctement: les travaux de cron avec un intervalle ne sont pas reportés (si le travail est terminé avec succès).


@cydparser I Personnellement, n'utilisez pas de retarded_job comme processeur d'arrière-plan avec retarded_cron, je préfère Sidekiq. Cependant, il y a eu des mises à jour de la classe TeledredJob à l'intérieur du retardéd_cron dans les versions 0,2.2 et 0.2.3. Quelle version de la gemme utilisez-vous? De toute façon, je prévois de mettre à jour retarded_cron pour utiliser Activejob de Rail pour abstraire les adaptateurs de travail afin que la compatibilité avec différents processeurs de fond ne soit pas un problème à l'avenir.