У меня есть работник sidekiq, который подключается к удаленной базе данных odbc, извлекает данные и затем обновляет локальную базу данных. Теперь я раскалываю рабочего на двух рабочих. Один будет подключаться и извлекать данные, а другой - обновлять записи.Sidekiq: передать объект как параметр
Соединение возвращает объект #<OCI8::Cursor:0x00000007703f30>
, что я передаю параметры второму работнику.
SecondWorker.perform_async({:odbc => connection})
Во второй работник я попытался использовать его:
def perform(options)
order_odbc = options['odbc']
end
Но он рассматривает объект как строку
"#<OCI8::Cursor:0x00000006bddf48>":String
Есть ли другой способ передать объекты в параметрах? (string
, integer
и т. Д.).
Спасибо. Цель состоит в том, чтобы минимизировать рабочую нагрузку первого рабочего, когда он сначала подключается к серверу, извлекает данные и затем обновляет записи. Поэтому я решил начать новый рабочий. – Arif
Поскольку вы будете использовать другой метод (т. Е. Код, который будет представлять «второго рабочего») в качестве метода асинхронизации, он освобождает самого Рабочего. Я не уверен, но может ошибаться, что вы получите какие-либо «выгоды» от перевода этого кода второму работнику. Используя вызов async 'delay', рабочий перемещается и т. Д. –