首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >监控API的更改- Pythonic方式?

监控API的更改- Pythonic方式?
EN

Stack Overflow用户
提问于 2015-03-05 22:47:06
回答 2查看 2.3K关注 0票数 4

我希望在RESTful应用程序接口更改其响应时收到警报。用Python做这件事的最好方法是什么?

我有一个可以调用的API - 192.168.1.1/status.json -它返回一个包含大量数据的JSON文件。例如:

{
  "status"      : "charging",
  "status_code" : 123
}

我想要检测状态代码何时更改。

我可以将cron设置为每分钟轮询一次API (对于我的需求来说,这是足够的分辨率)-但是,将新结果与以前的结果进行比较的最好方法是什么?

我唯一能想到的就是将.json文件保存到磁盘上,然后读取并比较它。有没有更好/更正确的跨会话持久化数据的方法?

另一种方法是将Python程序设置为循环运行,休眠60秒,并将结果保存在内存中。但是,我必须确保没有内存泄漏,在启动时保持它运行,防止它崩溃,等等。

API服务器是非常基础的-所以关于"Proper way to periodically check an api for new data?“的建议是不可能的。

我是不是忽略了什么显而易见的东西?

EN

回答 2

Stack Overflow用户

发布于 2015-03-06 22:09:44

也许你应该看看这个链接。here

import json
#import tempfilehttp://stackoverflow.com/editing-help
# first install pandokia  ( pip install pandokia )
import pandokia.helpers.filecomp as filecomp

# string object
obj = """
{
  "status"      : "charging",
  "status_code" : 123
}
"""

objTwo = """
{
  "status"      : "chargingToo",
  "status_code" : 123
}
"""
# From a json back to a python string object
result = json.dumps(obj)
resultTwo = json.dumps(objTwo)

assert filecomp.diffjson( result, resultTwo )

请在导入pandokia模块后阅读文档。帮助(Filecomp)

票数 2
EN

Stack Overflow用户

发布于 2018-07-06 03:57:01

jsondiff python包将执行您想要的操作。

从API中下载最新的json,并使用jsondiff将其与上一个json进行比较。如果有变化,以某种方式提醒(电子邮件等)并保存新的json覆盖旧的。根据您想要检查API的频率重复此操作。

jsondiff易于使用,它会给出API输出中的更改,以便在警报中使用。

>>> from jsondiff import diff

>>> diff({'a': 1, 'b': 2}, {'b': 3, 'c': 4})
{'c': 4, 'b': 3, delete: ['a']}

>>> diff(['a', 'b', 'c'], ['a', 'b', 'c', 'd'])
{insert: [(3, 'd')]}

>>> diff(['a', 'b', 'c'], ['a', 'c'])
{delete: [1]}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28880627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档