节流阀Sidekiq在rails中的工作。

我需要对我的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工人的 “池子”,一旦消耗,任何剩余的Job都会失败 因为所有的池子连接都在使用中,就像错误所说的那样。

比如说,我需要针对50个地址运行ScanJob。 有没有办法限制Sidekiq池的大小,一次运行5个,然后把剩下的45个排队。 当这5个完成后,再运行下一个5个(剩余40个排队作业),以此类推?

解决方案:

试试这个。bundle exec sidekiq -c 5

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何用一个ruby作业和一个python worker来使用Faktory?

2022-9-8 4:02:19

未分类

背景图片通过不同的元素变得波澜不惊

2022-9-8 4:02:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索