我希望在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?“的建议是不可能的。
我是不是忽略了什么显而易见的东西?
发布于 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)
发布于 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]}
https://stackoverflow.com/questions/28880627
复制相似问题