HDX数据新鲜度

hdx-data-freshness的Python项目详细描述


HDX数据新鲜度

Build StatusCoverage Status

hdx freshness在python中的实现读取所有数据集 从Humanitarian Data Exchange 网站(使用hdx python库),然后遍历它们 一个接一个地执行一系列步骤。

  1. 它获取数据集的更新频率(如果有)。如果更新的话 频率永远不是,那么数据集总是新鲜的。
  2. 如果没有,则检查数据集和资源元数据是否已更改- 从新鲜度的角度来看,这是一个更新。它比较 当前时间和更新时间之间的差异 更新频率并设置状态:新鲜、到期、过期或 有过失的。
  3. 如果数据集不是基于元数据的新数据集,则 检查资源。如果它们是内部url(data.humdata.org- hdx文件存储,manage.hdx.rwlabs.org-cps)则没有 因为当文件指向 通过这些url更新,hdx元数据被更新。
  4. 如果它们是具有临时更新频率的url (proxy.hxlstandard.org,ourairports.com),那么新鲜度不能是 决心。目前,hdx中没有指定adhoc的机制。 更新频率,但有人建议将此添加到更新中 频率选项。目前,新鲜度对于临时性 数据集基于为更新频率设置的任何内容,但是 如果 需要。
  5. 如果url是外部托管的,而不是临时托管的,那么我们可以打开 对文件的http get请求,并检查为 上次修改的字段。如果该字段存在,则我们读取日期和 从它开始的时间,并检查它是否比数据集或 资源元数据修改日期。如果是,我们会重新计算 新鲜感。
  6. 如果按此度量,资源不新鲜,则下载 文件并为其计算MD5哈希。在我们的数据库中,我们存储 以前的哈希值,因此我们可以检查哈希是否已更改 上次我们吃杂烩的时候。
  7. 在某些资源中,哈希值会不断变化,因为 它们连接到一个可以动态生成文件的api。识别 这些,我们再次散列并检查散列是否在几秒钟内更改 自上次哈希计算以来。

由于URL可能存在临时连接和下载问题, 该代码具有多个重试功能,但延迟会增加。阿尔索 因为有很多请求要提出,而不是一个接一个地执行 首先,它们使用异步功能并发执行 已经添加到最新版本的python中。

用法

python run.py

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

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件