用于生成和保留fedmsg统计信息的守护进程

statscache的Python项目详细描述


用于生成和保存fedmsg统计信息的守护进程。

motivation:我们有一个名为datagrepper的整洁服务,您可以使用它查询 fedmsg总线的历史记录。很酷,但不够 我们想做一些更高级的报告和分析。拿着, 例如,releng-dash。 为了呈现页面,它必须向 datagrepper尝试从 结果。因此,加载需要很长时间。

进去吧,斯塔查奇。它是fedmsg hub的一个插件,位于 基础设施。当新消息到达时,它将把它们传递给plugins,后者将计算并 存储各种统计数据。如果我们想保留一种新的统计数据,我们 为它编写一个新插件。它的前端有一个小瓶子,很像 datagrepper,它允许您查询这个或那个 格式(csv、json,也可能是html或svg,但这可能是过分了)。这个想法 因为我们可以建造更整洁、更智能的前端, 基于fedmsg的活动非常快..也许以后会深入到 details保存在datagrepper中。

它有点像data mart

如何运行它

创建一个virtualenv,git克隆这个目录和statcache_插件 回购。

先在statscache目录中运行python setup.py develop,然后运行它 在statscache_plugins中。

在statcache repo主目录中,运行fedmsg-hub启动 守护进程。你应该会看到很多有趣的数据存储在stdout中。发射 web接口(目前只提供json和csv响应)运行 python statscache/app.py在同一目录中。现在您可以查看 通过访问json中的可用插件 localhost:5000/api/,您可以检索 通过将给定插件的标识符附加到该插件上而记录的统计信息 网址。

您可以使用python setup.py test运行测试。

工作原理

当消息到达时,fedmsg consumer将收到该消息并将副本交给 每个加载的插件进行处理。每个插件在内部缓存结果 直到polling producer指示它更新 它的数据库模型并清空它的缓存。投票的频率 producer可以在应用程序级别配置,并设置为1 默认为第二个。

每个插件都应该使用基本的sqlalchemy模型来存储 他们的结果(我们可以在发现新的 需求)。但是了解基本模型的重要一点是 负责知道如何将自己序列化为 rest api(例如,呈现.to_csv().to_json())。

尽管statscache是一个长期运行的服务,但是 重启是不可避免的。但是,在 fedmsg数据可能会导致一些插件产生不准确的统计数据。幸运的是, statscache内置了一个透明处理机制。打开 启动时,statcache检查每个插件最新数据库的时间戳 更新并查询datagrepper以获取填补任何空白所需的fedmsg数据。 另一方面,如果插件不需要 fedmsg历史记录,然后它可以指定一个“backlog delta”,即 对它有用的FEDSMSG数据的最大积压。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否存在这样一种场景:Java7的Hashmap实现优于Java8的实现   java如何打印这些完整的数组?   java BuildException:未能执行aapt   java如何使用类。未知类型的集合返回的cast()   java准备语句返回错误的值   webview 安卓中的java显示身份验证对话框   java如何重命名列名JPA Hibernate   java查询从特定用户和特定时间段的Oracle表(通过比较原始表和备份表)中选择修改的行   java Youtube视频仅在三星S6设备上加载时自动暂停   未调用java RecyclerView getItemViewType   使用JSch setCommand执行带有源选项的java Shell ping命令时失败   java Hibernate:无法删除|删除分离的实例   Java Spring@MappedSuperclass字段作为子类中的@Id字段   java Android:确定单击了哪个按钮,因为该按钮未在xml中定义   如何计算java阵列内存使用率   使用Java查找按字母顺序排列的第一个字符串   javascript注销功能刷新页面,但页面仍已登录   当接口作为参数提供时,java依赖项注入不起作用   java中带原语的字符串扭曲