0

通过 Rufus 调度程序创建 cron 作业时,cron 作业的代码块中是否有某种方法可以确定 cron 作业本身的 job_id?

我想做的是这样的:

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

问题是self.job_id。有关如何检索当前正在触发的 cron 的当前 job_id 的任何建议?

我知道有类似“triggered_threads”的东西,它返回当前正在运行的作业。但我想要更具体的东西:我当前所在的代码块的 job_id。

这可能吗?

4

1 回答 1

1

我能够通过为 scheduler.cron 方法调用提供一个明确标识新作业 ID 的可选参数来解决此问题:

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在调用 scheduler.cron 之前定义的变量在哪里。

于 2012-07-31T12:37:12.397 回答