Python 中监控的多处理队列
项目描述
什么是mnqueues?
mnqueues代表 Monitored Queues - Python multiprocessingQueue() 和 Monitor 实体之间的耦合。监视器收集队列使用统计信息并发出警报。
跟踪措施
mnqueues跟踪每个队列的几个度量:
- 每分钟写入队列的平均次数,
- 每分钟要排队的平均读取次数,
- 在队列中花费的时间(延迟)以毫秒为单位。
安装
要安装mnqueues类型:
pip install mnqueues
如何使用
创建监控队列:
import mnqueues as mnq
from mnqueues.gcp_monitor import GCPMonitor
q = mnq.MNQueue(monitor=GCPMonitor("some-unique-name"))
该MNQueue()对象封装了 Pythonmultiprocessing.Queue()并支持相同的功能。MNQueue() 对象可以在进程之间传递,就像 Queue() 对象一样。
监视器
文件记录器
from mnqueues.log_monitor import LOGMonitor
monitor = LOGMonitor("log-file-name")
记录所有put()并get()调用到具有log-file-name.log以下格式的名称的日志文件:
[<OS process-id>]->2021-07-07 21:31:14 INFO:get counter: 5003
[<OS process-id>]->2021-07-07 21:31:14 INFO:get counter: 4997
谷歌云监视器(使用 StackDriver)
from mnqueues.gcp_monitor import GCPMonitor
monitor = GCPMonitor("unique-name")
所有对 Google Cloud Monitor 的调用put()和get()发送到 Google Cloud Monitor。Monitor 类将数据发送到两个自定义度量:
OpenCensus/mnqueues.{name}.number_queue_get(行,不需要 GCP 上的聚合)OpenCensus/mnqueues.{name}.number_queue_put(行,不需要 GCP 上的聚合)OpenCensus/mnqueues.{name}.time_in_queue_distribution(带有总和的热图,显示延迟分布)
请注意,{name}在构建 Monitor 时将其作为参数传递,它旨在帮助为特定用例创建仪表板。
例子
GCP
- 查看显示 queue.put() 和 queue.get() 每秒速率的 Google Cloud (GCP) 监控仪表板,通过
pytest在项目测试文件夹上运行生成。 - 使用LiuAlgoTrader的实时网络套接字交易数据监控队列。
更多示例
可以在测试文件夹中找到。
贡献
高度赞赏贡献。请查看我们
的行为准则。错误报告和功能请求可以留在该Issues部分,或发送电子邮件至amor71@sgeltd.com