Resque-Scheduler не работает с ActiveJob в Rails 4.2
Кто-нибудь смог получить запланированные задания для работы в Rails 4.2?
Я использую Resque, и я пытаюсь использовать Resque-планировщик для планирования заданий. У меня есть расписание, которое загружается, и планировщик запускается, и даже выглядит, как будто он выполняет задания, но ничего не делает.
resque-scheduler: [INFO] 2014-09-16T01:54:25-07:00: Starting
resque-scheduler: [INFO] 2014-09-16T01:54:25-07:00: Loading Schedule
resque-scheduler: [INFO] 2014-09-16T01:54:25-07:00: Scheduling friends
resque-scheduler: [INFO] 2014-09-16T01:54:25-07:00: Schedules Loaded
resque-scheduler: [INFO] 2014-09-16T01:54:55-07:00: queueing FriendsJob (friends)
Я могу поставить в очередь такие работы, и они будут обработаны.
TestJob.enqueue(params[:id])
и я получаю этот вывод в журнале работника
got: (Job{default} | ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper | ["TestJob", "98732ce5-17f7-4da3-9a03-a5d2f8f74e84", "8"])
** [01:24:01 2014-09-16] 54841: resque-1.25.2: Processing default since 1410855841 [ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper]
** [01:24:01 2014-09-16] 54841: Running before_fork hooks with [(Job{default} | ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper | ["TestJob", "98732ce5-17f7-4da3-9a03-a5d2f8f74e84", "8"])]
** [01:24:01 2014-09-16] 54841: resque-1.25.2: Forked 54882 at 1410855841
** [01:24:01 2014-09-16] 54882: Running after_fork hooks with [(Job{default} | ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper | ["TestJob", "98732ce5-17f7-4da3-9a03-a5d2f8f74e84", "8"])]
Hello World!!
** [01:24:01 2014-09-16] 54882: done: (Job{default} | ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper | ["TestJob", "98732ce5-17f7-4da3-9a03-a5d2f8f74e84", "8"])
Но когда я пытаюсь наметить работу, похоже, что меня ставят в очередь, но они ничего не делают.
Вот расписание.
friends:
every: "30s"
queue: "friends"
class: "FriendsJob"
args: 8
description: "Friends jobs scheduler"
Вот выход из запланированной работы.
** [01:23:36 2014-09-16] 54841: got: (Job{friends} | FriendsJob | [8])
** [01:23:36 2014-09-16] 54841: resque-1.25.2: Processing friends since 1410855816 [FriendsJob]
** [01:23:36 2014-09-16] 54841: Running before_fork hooks with [(Job{friends} | FriendsJob | [8])]
** [01:23:36 2014-09-16] 54841: resque-1.25.2: Forked 54880 at 1410855816
** [01:23:36 2014-09-16] 54880: Running after_fork hooks with [(Job{friends} | FriendsJob | [8])]
** [01:23:36 2014-09-16] 54880: done: (Job{friends} | FriendsJob | [8])
После прочтенияhttp://dev.mikamai.com/post/96343027199/rails-4-2-new-gems-active-job-and-global-id Я подозреваю, что это как-то связано с ActiveJob и GlobalId.
Посмотрите на разницу в очереди
** [01:24:01 2014-09-16] 54841: Running before_fork hooks with [(Job{default} | ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper | ["TestJob", "98732ce5-17f7-4da3-9a03-a5d2f8f74e84", "8"])]
против запланированного
** [01:23:36 2014-09-16] 54841: Running before_fork hooks with [(Job{friends} | FriendsJob | [8])]
Сами рабочие места были созданы с помощью
rails g job <JobName>
Они выглядят так:
class TestJob < ActiveJob::Base
queue_as :default
def perform(friend_id)
friend = Friend.find(friend_id)
name = friend.name.swapcase
puts "Hello World!!"
end
end
class FriendsJob < ActiveJob::Base
queue_as :friends
def perform(friend_id)
friend = Friend.find(friend_id)
name = friend.name.swapcase
puts "Hello World!!"
end
end
Любая помощь с этим будет принята с благодарностью и заранее спасибо.
********* ОБНОВИТЬ *********
Я удалил action_job railtie и использую только Resque и Resque-Scheduler, и запланированные задания теперь работают. Так что, похоже, это связано с ActionJob / GlobalId. Я открыл вопрос в проекте рельсов. Надеюсь, они скоро это исправят.
****** ВТОРОЕ ОБНОВЛЕНИЕ ********* Я получил обновление об этом. Кристианбика, который работает в базе кода ActiveJob, сказал это. «Мы не думали о повторяющихся работах до сих пор, и мы не поддерживаем это, поскольку ни один из адаптеров не поддерживает это без внешнего драгоценного камня. Однако это очень хорошая функция, но я не думаю, что мы сможем сделать это вовремя 4.2. Также я не уверен, что это подходит для включения в рельсы "