如何每X分钟为n次出现运行ruby脚本

时间:2017-02-06 20:17:22

标签: ruby rufus-scheduler recurring-events

我正在查看https://github.com/jmettraux/rufus-scheduler,它很好地允许我安排和链接事件。

但我希望事件在第10次发生后或24天之后停止。

我该怎么做?

我的情况是:

运行一个脚本,该脚本根据间隔创建定期作业,然后在给定日期或事件发生后停止。

这就是我所做的。

def run_schedule(url, count, method, interval)
  puts "running scheduler"

  scheduler = Rufus::Scheduler.new

  scheduler.every interval do
    binding.pry
    attack_loop(url, count, method)
  end
end

我正在测试我的网站,并希望在内存中安排attack_loop以便在该时间间隔内运行。

但似乎它从未到达binding.pry行。

2 个答案:

答案 0 :(得分:0)

通常这些调度程序通过cron作业运行。然后你的要求的问题是cron job不知道你是第10次出现还是24天,因为它没有跟踪。一种可能的解决方案是创建一个单独的表来更新cron作业详细信息。

我在想一张像

这样的表
scheduler_details

- id
- occurrence_count
- created_date
- updated_date
_ scheduler_type

因此,现在当您运行脚本时,您可以创建或更新详细信息。 (您可以按scheduler_type搜索脚本

  • 您可以查看发生次数
  • 创建日期,您可以计算24天

HTH

答案 1 :(得分:0)

美好的一天,您可以指定作业应该运行的次数:

https://github.com/jmettraux/rufus-scheduler/#times--nb-of-times-before-auto-unscheduling

如果你需要更复杂的停止条件,你可以这样做:

scheduler.every interval do |job|
  if Time.now > some_max_date
    job.unschedule
  else
    attack_loop(url, count, method)
  end
end
  

但似乎它从未击中binding.pry行。

你的问题标题有什么关系?你在混合问题吗?