Rails - 通过 API 访问 sidekiq 状态
Rails - Access sidekiq status via API
我正在为工作人员使用 sidekiq
和 sidekiq-status
gem,并在网络上跟踪他们的进度 UI:/sidekiq/statuses
。
对于单个工作人员跟踪 /sidekiq/statuses/job_id
。
如何通过 API 从前端访问进度信息?
在 GET /sidekiq/stats
我收到回复:
{
"sidekiq": {
"processed": 805,
"failed": 62,
"busy": 3,
"processes": 1,
"enqueued": 0,
"scheduled": 0,
"retries": 1,
"dead": 0,
"default_latency": 0
},
"redis": {
"redis_version": "3.0.6",
"uptime_in_days": "0",
"connected_clients": "24",
"used_memory_human": "1.06M",
"used_memory_peak_human": "2.00M"
},
"server_utc_time": "14:50:29 UTC"
}
我可以为 /statuses/job_id
做类似的事情吗?
查看 Sidekiq::Web source 我看到返回的唯一端点 JSON 是 /sidekiq/stats
和 /sidekiq/stats/queues
.
记住,Sidekiq 有很多 API helpers for use in your Ruby code。您没有理由不能创建自己的控制器来使用 Ruby API 将作业信息传递到前端。例如。 Sidekiq::Queue.new("high-queue").find_job(jid)
这还有一个好处是可以让您对数据设置更细粒度的用户访问控制,而不是让您前端的任何用户都可以访问 Sidekiq API。
如果您打算大量使用它,您可能会考虑升级到专业版,其中包括 Pro API 和更高效的 Sidekiq::JobSet#find_job(jid)
方法。
最后,如果 Sidekiq 中没有 API 帮助程序,请记住 Sidekiq 只是后端的 Redis,您可以编写自己的 Redis 查询来获取所需形状的正确数据。
如果您想获取单个 sidekiq 队列的统计信息,我已经写了一个小 gem sidekiq_queue_metrics 来实现。它在 Web UI 上提供各个队列统计信息,并提供 API 来获取指标。
require 'sidekiq_queue_metrics'
Sidekiq.configure_server do |config|
Sidekiq::QueueMetrics.init(config)
end
API 获取统计信息:
Sidekiq::QueueMetrics.fetch
#=> {
"mailer_queue" => {"processed" => 5, "failed" => 1, "enqueued" => 2, "in_retry" => 0},
"default_queue" => {"processed" => 10, "failed" => 0, "enqueued" => 1, "in_retry" => 1}
}
网页UI:
我正在为工作人员使用 sidekiq
和 sidekiq-status
gem,并在网络上跟踪他们的进度 UI:/sidekiq/statuses
。
对于单个工作人员跟踪 /sidekiq/statuses/job_id
。
如何通过 API 从前端访问进度信息?
在 GET /sidekiq/stats
我收到回复:
{
"sidekiq": {
"processed": 805,
"failed": 62,
"busy": 3,
"processes": 1,
"enqueued": 0,
"scheduled": 0,
"retries": 1,
"dead": 0,
"default_latency": 0
},
"redis": {
"redis_version": "3.0.6",
"uptime_in_days": "0",
"connected_clients": "24",
"used_memory_human": "1.06M",
"used_memory_peak_human": "2.00M"
},
"server_utc_time": "14:50:29 UTC"
}
我可以为 /statuses/job_id
做类似的事情吗?
查看 Sidekiq::Web source 我看到返回的唯一端点 JSON 是 /sidekiq/stats
和 /sidekiq/stats/queues
.
记住,Sidekiq 有很多 API helpers for use in your Ruby code。您没有理由不能创建自己的控制器来使用 Ruby API 将作业信息传递到前端。例如。 Sidekiq::Queue.new("high-queue").find_job(jid)
这还有一个好处是可以让您对数据设置更细粒度的用户访问控制,而不是让您前端的任何用户都可以访问 Sidekiq API。
如果您打算大量使用它,您可能会考虑升级到专业版,其中包括 Pro API 和更高效的 Sidekiq::JobSet#find_job(jid)
方法。
最后,如果 Sidekiq 中没有 API 帮助程序,请记住 Sidekiq 只是后端的 Redis,您可以编写自己的 Redis 查询来获取所需形状的正确数据。
如果您想获取单个 sidekiq 队列的统计信息,我已经写了一个小 gem sidekiq_queue_metrics 来实现。它在 Web UI 上提供各个队列统计信息,并提供 API 来获取指标。
require 'sidekiq_queue_metrics'
Sidekiq.configure_server do |config|
Sidekiq::QueueMetrics.init(config)
end
API 获取统计信息:
Sidekiq::QueueMetrics.fetch
#=> {
"mailer_queue" => {"processed" => 5, "failed" => 1, "enqueued" => 2, "in_retry" => 0},
"default_queue" => {"processed" => 10, "failed" => 0, "enqueued" => 1, "in_retry" => 1}
}
网页UI: