F40*_*404 5 ruby cron ruby-on-rails scheduled-tasks rails-activejob
我正在做一个天气 API,它将从另一个 API 获取、处理和保存数据。为了获取每日更新(请求 URL 信息、获取 JSON/XML 数据、构建我的数据并将其保存到我的数据库),我认为最合适的方法是使用 ActiveJob。
我想安排作业定期运行。我想要像 UNIX cron 或 Spring @Scheduled 注释之类的 Java 注释。
我在 Stack Overflow(这个)上看到了另一个关于调度作业的问题,但他们像任何时候一样使用外部 gem。我一直在寻找允许在 Rails API ( Backends ) 中执行作业的后端,但似乎没有一个可用的允许调度作业。
Rails 框架(第 5 版)上有什么东西可以让我做我想做的事吗?或者我必须使用外部宝石?
非常感谢。
编辑如果对任何人有用,这里是工作的架构:
class ImportDailyDataJob < ApplicationJob
queue_as :default
def perform(*args)
# Do something later
end
private
def prepare_request
# return the request object
end
def request_data
# Get the data from external API.
end
def process_data
# Process the data
end
def save_processed_data
# Saves the data to the database
end
end
Run Code Online (Sandbox Code Playgroud)
这不是真正的调度,但如果您不需要完全准确的调度,您可以在某些情况下伪造它,即在您的情况下每天运行一次作业:
class WeatherJob < ApplicationJob
def perform
reschedule_job
do_work
end
def do_work
# ...
end
def reschedule_job
self.class.set(wait: 24.hours).perform_later
end
end
Run Code Online (Sandbox Code Playgroud)
使用 ActiveJob 对将来运行的作业进行排队应该与 DelayedJob 或 Sidekiq 一起使用,但所有活动作业后端可能不支持?
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |