我需要每隔10秒从外部API读取一些数据并将其保存到我的数据库中。我曾尝试用cron作业 - 宝石每次,但它不允许小于1分钟的时间间隔。 Rails 4+每隔几秒运行一次后台工作的最佳方法是什么?
答案 0 :(得分:3)
只需将resque
与resque-scheduler
一起使用即可运行这些后台作业。
例如,鉴于这项工作:
class ReadDataFromApiJob
def self.perform
data = read_from_api
save(data)
end
def read_from_api
# ...
end
def save(data)
# save to db
end
end
您可以创建一个预定作业,以便在config/resque_schedule.yml
文件中每10秒运行一次:
---
ReadDataFromApiJob:
every:
- 10s
class: ReadDataFromApiJob
queue: my_queue
description: This job will read and save data from the api every 10 seconds