я использовал Resque-планировщик для заданий задержки в предыдущем коде:спасательного-статус и спасательный-планировщик для запаздывающих заданий
Resque.enqueue_in(options[:delay].seconds, self, context)
Теперь я хочу, чтобы включить Resque-статус, чтобы сделать работу, но не имею ни малейшего представления о том, как они могут работать вместе. Последний источник спасательное-код состояния поддерживает планировщик, как и в исходном коде:
https://github.com/quirkey/resque-status/blob/master/lib/resque/plugins/status.rb
# Wrapper API to forward a Resque::Job creation API call into a Resque::Plugins::Status call.
# This is needed to be used with resque scheduler
# http://github.com/bvandenbos/resque-scheduler
def scheduled(queue, klass, *args)
self.enqueue_to(queue, self, *args)
end
конец
Но я не знаю, как его использовать. Должен ли я просто вызвать SampleJob.scheduled (queue, myclass,: delay => delay) вместо SampleJob.create (options)?
=================================================================================================================================================== ========================
Кроме того, есть поддержка Resque-статус (и другие пользовательские рабочие места):
https://github.com/bvandenbos/resque-scheduler
Некоторые Resque-расширения, такие как resque-status, используют специальные классы заданий со слегка отличающейся подписью API. Resque-scheduler не пытается поддерживать все существующие и будущие классы пользовательских заданий, вместо этого он поддерживает флаг расписания, поэтому вы можете расширить свой собственный класс и обеспечить поддержку запланированного задания.
Давайте представим, что у нас есть класс JobWithStatus под названием FakeLeaderboard
class FakeLeaderboard < Resque::JobWithStatus
def perform
# do something and keep track of the status
end
end
, а затем расписание:
create_fake_leaderboards:
cron: "30 6 * * 1"
queue: scoring
custom_job_class: FakeLeaderboard
args:
rails_env: demo
description: "This job will auto-create leaderboards for our online demo and the status will update as the worker makes progress"
Но это только кажется, для повторяющихся заданий. Я могу найти параметры cron, но не задержка. Итак, как я могу обрабатывать задержанные задания?
Спасибо!
Как вы указать дату/время что вы хотите, чтобы Resque выполнил задание? –
@DonCote использует методы 'enqueue_at' или' enqueue_in' 'resque-scheduler'. Они берут ваш класс работы как второй аргумент, а любые данные - как третий. Например: 'Resque.enqueue_at (5.minutes.from_now, JobWithStatus, {foo: 'bar'})' –