Ruby - 延迟代码

时间:2015-10-05 02:34:40

标签: ruby

我想从我的Ruby Sinatra脚本启动这个Twilio电话从现在起5分钟。最好/最简单的方法是什么?

@call = @client.account.calls.create(
    :from => '+11231231234',
    :to => '+13333333333',     
    :url => 'response.xml'
)

3 个答案:

答案 0 :(得分:2)

我使用rufus-scheduler gem,它允许你延迟ruby中的任何代码:

require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new

scheduler.in '5m' do
  # do something in 5 minutes
end

答案 1 :(得分:0)

rufus-scheduler宝石是:

  

Rufus-scheduler(开箱即用)是一个进程内的内存调度程序。

     

它不会保留您的日程安排。当进程消失并且调度程序实例带有它时,计划就不见了。

异步代码执行的类似解决方案,包括定时事件,包括eventmachine gem和iodine gem(我偏向于它)。

如果您正在使用Thin服务器,那么您已经在运行EventMachine,也可以使用它。 Iodine服务器和它自己的反应器模式也是如此。

另一方面,如果您在启动过程完成后仍需要持久性内容,请查看Sidekiq with Redis

答案 2 :(得分:0)

对于后台作业,您需要额外的进程和队列存储(redis),大多数流行的库是: