Обновление статуса работника из класса внутри работника - PullRequest
0 голосов
/ 18 мая 2019

У меня есть работник, который загружает JSON из s3, затем потоковый анализатор JSON (Oj Saj), который анализирует файл в моей базе данных.Я могу обновить статус работника из класса работника, но как только я попаду в класс синтаксического анализатора, он выходит за рамки работника (или мне так кажется)

class Worker

  include Sidekiq::Worker
  include Sidekiq::Status::Worker



  class SajParser << Oj::Saj

    at 5 #this doesn't update the status of the worker

  end

  def perform()

    at 5 #this does update the status of the worker

  end

end

Я хотел бы найти решение, котороепозволяет мне обновлять статус работника, когда парсеры перебирают JSON и вставляют его в базу данных.

1 Ответ

0 голосов
/ 22 мая 2019

Если вы можете сделать так, чтобы метод Sidekiq :: Status #at взял jid задания для обновления и его текущий статус, то да, это возможно.Может быть, вы могли бы продолжить эту проблему , похоже, такую ​​же, как у вас.

Если я могу предложить на самом деле использовать мощь Sidekiq для распараллеливания работы парсера, в большем количестве работников вместоимея одного работника, выполняющего работу, так как у вас есть json в памяти, вы можете вращать работу для каждой части json, и всякий раз, когда одна из них выполняется, она должна хранить свое состояние где-нибудь доступным для всех заданий, например, для БД.

...