Мне нужно задушить мои задания в Sidekiq, чтобы я не получил эту ошибку:
2020-04-23T12:36:24.424Z pid=1 tid=osrlydn8x WARN: ActiveJob::DeserializationError: Error while trying to deserialize arguments: could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use
По сути, я пытаюсь отправить много IP-адресов в Sidekiq, где каждый IP был бы своей собственной работой:
ip_array.each do |ip|
ScanJob.perform_later(@scan, ip, ports)
end
ScanJob затем выполняет свою работу с каждым входящим IP-адресом, что может занять некоторое время, эффективно используя рабочий пул Sidekiq и один раз потребляя любые оставшиеся рабочие места. сбой, потому что все пулы подключений используются, как об ошибках.
Скажем, например, мне нужно запустить ScanJob для 50 адресов. Есть ли способ ограничить размер пула Sidekiq для запуска 5 за раз и поставить в очередь оставшиеся 45. Когда эти 5 будут выполнены, следующие 5 запустятся (осталось 40 заданий в очереди) и так далее?