当某个时间等于Rails中的某个值时执行函数 6

Execute a function when a time is equal to a certain value in Rails 6

我正在建立一个在线电子商务商店,我正在尝试使用 rails 和动作电缆在特定日期时间将产品从缺货更新为有货,例如 12:00:00 2020-02-19

想法是一到时间就推一个Websocket,产品已经上架了

我尝试了一些解决方案,例如:

  Thread.new do
    while true do
      if **SOMETIME** == Time.now
        ActionCable.server.broadcast "product_channel",content: "product-in-stock"
      end
    end
  end

此方法的主要问题是它会创建另一个线程并使 rails 无响应。此外,如果将此值设置为从现在起 1 周后,我不希望每个查询端点的用户都像这样创建一个全新的线程 运行。

你有两个选择使用 sidekiq 作业或使用任何时候作业 gem https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs 每当允许您设置特定的日期和时间时,请查看文档以获取更多信息 https://github.com/javan/whenever