Déterminez job_id à partir du bloc de code pour une tâche cron dans Rufus Scheduler (rails 3.2)

StackOverflow https://stackoverflow.com//questions/11710112

  •  13-12-2019
  •  | 
  •  

Question

Lors de la création d'un travail Cron via le planificateur Rufus, y a-t-il un moyen dans le bloc de code pour le travail cron pour déterminer le travail du travail Cron lui-même?

Ce que je veux faire, c'est quelque chose comme ceci :

scheduler.cron '0 0 0 * * * Etc/GMT+0' do
  # Nix existing jobs.
  scheduler.cron_jobs.values.map { |j| if j.job_id != self.job_id then j.unschedule end }     
  ...
end

Le problème est self.job_id.Des suggestions sur la façon de récupérer le travail actuel du Cron qui est actuellement déclenché?

Je sais qu'il y a quelque chose comme "déclenché_threads", qui a renvoyé des travaux en cours d'exécution.Mais je veux quelque chose de plus précis :Le travail du bloc de code dans lequel je suis actuellement.

Est-ce possible?

Était-ce utile?

La solution

J'ai pu résoudre ce problème en fournissant à l'invocation de la méthode programmer.cron un paramètre facultatif qui identifiait explicitement l'ID du nouveau travail :

scheduler.cron '0 0 0 * * * Etc/GMT+0', {:job_id => explicit_job_id} do
  # Nix existing jobs.
  scheduler.cron_jobs.values.map { |j| if j.job_id != self.job_id then j.unschedule end }     
  ...
end

explicit_job_id est une variable définie avant l'invocation de programmer.cron.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top