Кто-нибудь мог получить запланированные задания для работы в Rails 4.2?Resque-Scheduler не работает с ActiveJob в Rails 4.2
Я использую resque, и я пытаюсь использовать resque-scheduler для планирования заданий. У меня есть график, который загружается, и планировщик работает, и даже выглядит, что он запускает задания, но он ничего не делает.
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"])
работник Но когда я пытаюсь запланировать работу, похоже, получают Епдиеие, но они хорошо ничего не делать.
Вот schedule.yml
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
Любая помощь с этим будет принята с благодарностью и заблаговременно.
********* ********* UPDATE
я удалил action_job railtie, и я использую Resque и Resque-планировщика только, и запланированные задания работают Теперь. Так что это похоже на ActionJob/GlobalId. Я открываю проблему в проекте rails. Надеюсь, они скоро это исправит.
****** ВТОРОЕ ОБНОВЛЕНИЕ ********* У меня есть обновление об этом. Об этом сказал Cristianbica, который работает в кодовой базе ActiveJob. «Мы пока не думали о повторяющихся работах, и мы не поддерживаем это, так как ни один из адаптеров не поддерживает это без внешнего драгоценного камня. Однако это очень приятная функция, но я не думаю, что мы можем сделать это вовремя для 4.2. Также я не уверен, что он будет включен в рельсы »
Если кто интересуется вышеуказанной проблемой, проверьте это: https://github.com/rails/rails/issues/16933. – juanitofatas
Я также хотел бы использовать activejob, но я сдерживаюсь, так как мне нужно иметь повторяющиеся задания, которые запускаются каждые 15 минут и каждые 1 минуту. – omencat