ruby - 用于确定 Sidekiq 中给定队列正在运行多少线程的命令
问题描述
我正在探索sidekiq API,并试图找到一种方法来检查给定队列,在给定时刻有多少线程正在运行(我正在使用sidekiq limit fetch gem https://github.com/brainopia/sidekiq- limit_fetch,我想确保我在配置文件中设置的限制得到尊重)。我看了一下workers = Sidekiq::Workers.new
应该保存有关线程的信息,但它实际上没有显示有关线程数的任何信息。有没有办法在 sidekiq 的给定时刻找出特定队列有多少线程正在运行?
解决方案
我想你对Sidekiq::ProcessSet.new
. 从文档:
Sidekiq::ProcessSet
让您访问有关当前运行的 Sidekiq 进程集的近实时(每 5 秒更新一次)信息。您还可以远程控制进程:
ps = Sidekiq::ProcessSet.new
ps.size # => 2
ps.each do |process|
p process['busy'] # => 3
p process['hostname'] # => 'myhost.local'
p process['pid'] # => 16131
p process['concurrency'] # => 10 <- this is the number of threads per process
end
推荐阅读
- c++ - C++ 每 x 秒调用一次函数
- java - 如何在每次更改的正则表达式中添加一个字符?
- jquery - 在传递值时定位动态添加的文本值显示为空
- cefsharp - 自动滚动第二帧
- python - 使用正则表达式从熊猫数据框中的单元格中提取日期
- objective-c - 目标-c,object_getClassName(obj) vs NSStringFromClass([obj class])
- c# - 即使没有 datetime 列,也会获得“将 varchar 数据类型转换为 datetime 数据类型导致超出范围的值”
- node.js - 如何将对象或变量与 Promise.all 一起传递?
- excel - 在编译以下代码时,我有一个错误对象变量或未设置块变量
- datagrip - 在结果集上编辑/删除数据时获取执行查询的日志