【问题标题】:Throttle Sidekiq jobs in railsRails 中的 Throttle Sidekiq 工作
【发布时间】:2020-04-23 14:15:16
【问题描述】:

我需要限制我的 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

基本上,我要做的是向 Sidekiq 发送许多 IP 地址,每个 IP 都是自己的工作:

ip_array.each do |ip|
  ScanJob.perform_later(@scan, ip, ports)
end

ScanJob 然后对每个传入的 IP 地址执行其操作,这可能需要一些时间,有效地消耗 Sidekiq 工作人员“池”,并且一旦消耗,任何剩余的作业都会失败,因为所有池连接都在使用中,如错误所示。

例如,我需要针对 50 个地址运行 ScanJob。有没有办法将 Sidekiq 池大小限制为一次运行 5 个并将剩余的 45 个排队。当这 5 个完成后,接下来的 5 个运行(剩余 40 个排队的作业)等等?

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq


    【解决方案1】:

    试试这个:bundle exec sidekiq -c 5

    【讨论】:

    • 足够简单。详细地说,我最终将:concurrent: 5 添加到我的sidekiq.yml 文件中。
    猜你喜欢
    • 2018-08-29
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2014-07-31
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多