【问题标题】:rails + sideqik... How to perform a task at a specific date and timerails + sideqik ... 如何在特定日期和时间执行任务
【发布时间】:2014-05-02 19:06:22
【问题描述】:

我在 Rails 应用程序中使用 https://github.com/mperham/sidekiq gem 在特定日期和时间安排任务.. 例如:在预约时间前 10 分钟发送预约提醒。

class TextWorker
include Sidekiq::Worker

    def perform(appointer_id)
        number = Usermodel.find_by_id(appointer_id).contact
        Message.create(:from =>  email, 
                           :to =>   number,
                               :body => 'Thank you...Your appointment is at 10/1/2015 Sun, at 12pm')
    end

end

并在约会控制器中调用它:

class Appointments_controller

def create
    TextWorker.delay_until(10/20/2014, 13:40).perform_async(@user_contact)
end

delay_until 不适用于特定日期/时间:

还有其他方法可以在 sideqik 中的特定日期/时间执行任务吗?如果是这样怎么办?请

【问题讨论】:

  • 也许this 有帮助

标签: ruby-on-rails-3 datetime cron sidekiq whenever


【解决方案1】:

您可以传入计算出的差异,以发送 sidekiq 期望的内容

例如DateTime.parse("10/20/2014")-DateTime.now

所以:

  delay_interval = DateTime.parse("10/20/2014")-DateTime.now
  TextWorker.delay_until(delay_interval).perform_async(@user_contact)

【讨论】:

  • 运行 Sidekiq 5.1.3 我必须使用 perform_at(delay_time, @user_contact) 而不是 delay_until。或perform_in 而不是delay_for 并传递一个时间间隔。
  • @kaydanzie,您是否正在运行 Sidekiq 5.1.3 的社区版本来执行 perform_at(..., ..) ?
猜你喜欢
  • 2019-08-02
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2013-07-24
  • 2012-09-18
  • 2014-04-09
相关资源
最近更新 更多