модуль ActiveJob::Core
Предоставляет общее поведение, которое будет включено в каждый объект Active Job, унаследованный от ActiveJob::Base.
Атрибуты
Аргументы задачи
Отслеживает любые исключения, поднятые бэкендом, чтобы вызывающие стороны могли проверить ошибки.
Отслеживание времени очереди задачи
Hash, содержащий количество раз, когда эта задача обрабатывала ошибки для каждого конкретного объявления retry_on. Ключи — строковое представление исключений, перечисленных в объявлении retry_on, а соответствующее значение — количество выполнений, где соответствующее объявление retry_on обрабатывало одно из перечисленных исключений.
Количество раз, когда эта задача была выполнена (увеличивается при каждом повторе, например, после исключения).
Идентификатор задачи
I18n.locale для использования во время выполнения задачи.
Приоритет задачи (ниже — выше приоритет).
Идентификатор, необязательно предоставленный адаптером
Очередь, в которой будет находиться задача.
Отметка времени, когда должна быть выполнена задача
Часовой пояс, используемый во время выполнения задачи.
Публичные методы класса
# File activejob/lib/active_job/core.rb, line 91
def initialize(*arguments)
@arguments = arguments
@job_id = SecureRandom.uuid
@queue_name = self.class.queue_name
@priority = self.class.priority
@executions = 0
@exception_executions = {}
@timezone = Time.zone&.name
end Создаёт новый экземпляр задачи. Принимает аргументы, которые будут переданы методу perform.
Публичные методы экземпляра
# File activejob/lib/active_job/core.rb, line 146 def deserialize(job_data) self.job_id = job_data["job_id"] self.provider_job_id = job_data["provider_job_id"] self.queue_name = job_data["queue_name"] self.priority = job_data["priority"] self.serialized_arguments = job_data["arguments"] self.executions = job_data["executions"] self.exception_executions = job_data["exception_executions"] self.locale = job_data["locale"] || I18n.locale.to_s self.timezone = job_data["timezone"] || Time.zone&.name self.enqueued_at = job_data["enqueued_at"] end
Прикрепляет сохранённые данные задачи к текущему экземпляру. Получает хэш, возвращённый из serialize
Примеры
class DeliverWebhookJob < ActiveJob::Base
attr_writer :attempt_number
def attempt_number
@attempt_number ||= 0
end
def serialize
super.merge('attempt_number' => attempt_number + 1)
end
def deserialize(job_data)
super
self.attempt_number = job_data['attempt_number']
end
rescue_from(Timeout::Error) do |exception|
raise exception if attempt_number > 5
retry_job(wait: 10)
end
end
# File activejob/lib/active_job/core.rb, line 104
def serialize
{
"job_class" => self.class.name,
"job_id" => job_id,
"provider_job_id" => provider_job_id,
"queue_name" => queue_name,
"priority" => priority,
"arguments" => serialize_arguments_if_needed(arguments),
"executions" => executions,
"exception_executions" => exception_executions,
"locale" => I18n.locale.to_s,
"timezone" => timezone,
"enqueued_at" => Time.now.utc.iso8601
}
end Возвращает хэш с данными задачи, которые можно безопасно передать адаптеру очереди.
# File activejob/lib/active_job/core.rb, line 49 def successfully_enqueued? @successfully_enqueued end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.