ruby-on-rails - 在Rails 6中当时间等于某个值时执行一个函数
问题描述
我正在建立一个在线电子商务商店,并且我正在尝试使用带有动作电缆的导轨将产品从缺货更新为在某个日期时间有货,例如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/无论何时
推荐阅读
- r - 在具有相似名称的列之间使用 for 循环
- google-cloud-platform - 在 GCP 中无法将区域存储桶更改为多区域存储桶的原因是什么?
- javascript - 将 mp3 添加到 React
- python - 无法使用函数更新 tkinter 中的图像
- python - IndexError:数组的索引过多。Numpy + Pandas 数据框
- angular - 如何为新的子路由重新加载 Angular 路由器
- java - 应用程序不断崩溃
- visual-studio-code - 在哪里可以下载旧版本的 Visual Studio Code?
- python - 如何从一个句子中提取所有短语?
- python - Scrapy 只返回 400 个 http 代码错误