Ich mache eine Wetter-API, die Daten von einer anderen API erhalten, verarbeiten und speichern wird. Um die täglichen Updates zu erhalten (URL-Informationen anfragen, JSON/XML-Daten abrufen, meine Daten erstellen und in meiner Datenbank speichern) halte ich die Verwendung eines ActiveJobs für den geeignetsten Weg.Planen Sie einen ActiveJob in Rails
Ich möchte den Job so planen, dass er regelmäßig ausgeführt wird. Ich möchte etwas wie UNIX Cron oder Spring @ Scheduled Annotation für Java.
Ich habe eine andere Fragen zu Stack Overflow (this one) über die Planung von Jobs gesehen, aber sie verwenden externe Edelsteine wie immer. Ich habe nach einem Backend gesucht, das es ermöglicht, den Job in der Rails API (Backends) auszuführen, aber es scheint, dass keiner der verfügbaren Jobs einen Job planen kann.
Gibt es irgendetwas im Rails-Framework (Version 5), das mir erlaubt, das zu tun, was ich versuche? Oder muss ich ein externes Juwel benutzen?
Vielen Dank.
bearbeiten Wenn für jedermann, hier nützlich ist das Schema für den Job ist:
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
Up gewählt, weil eine Schiene nur so wäre, wäre schön. Persönlich habe ich Cron-Jobs verwendet, um Rails-Skripte auszuführen. –
Nur um etwas über externe Edelsteine vs ActiveJob zu klären: AJ bietet eine _common Schnittstelle _ zu verschiedenen Warteschlangenadaptern, die es so machen, dass der gleiche Code, sagen wir, Resque, leicht umgeschaltet werden kann, um Sidekiq zu sagen. Sie profitieren nicht wirklich von AJ _without_ mit einem Werkzeug außerhalb der Schienen Kern, jedoch. – Glyoko