HDX数据新鲜度
hdx-data-freshness的Python项目详细描述
HDX数据新鲜度
hdx freshness在python中的实现读取所有数据集 从Humanitarian Data Exchange 网站(使用hdx python库),然后遍历它们 一个接一个地执行一系列步骤。
- 它获取数据集的更新频率(如果有)。如果更新的话 频率永远不是,那么数据集总是新鲜的。
- 如果没有,则检查数据集和资源元数据是否已更改- 从新鲜度的角度来看,这是一个更新。它比较 当前时间和更新时间之间的差异 更新频率并设置状态:新鲜、到期、过期或 有过失的。
- 如果数据集不是基于元数据的新数据集,则 检查资源。如果它们是内部url(data.humdata.org- hdx文件存储,manage.hdx.rwlabs.org-cps)则没有 因为当文件指向 通过这些url更新,hdx元数据被更新。
- 如果它们是具有临时更新频率的url (proxy.hxlstandard.org,ourairports.com),那么新鲜度不能是 决心。目前,hdx中没有指定adhoc的机制。 更新频率,但有人建议将此添加到更新中 频率选项。目前,新鲜度对于临时性 数据集基于为更新频率设置的任何内容,但是 如果 需要。
- 如果url是外部托管的,而不是临时托管的,那么我们可以打开 对文件的http get请求,并检查为 上次修改的字段。如果该字段存在,则我们读取日期和 从它开始的时间,并检查它是否比数据集或 资源元数据修改日期。如果是,我们会重新计算 新鲜感。
- 如果按此度量,资源不新鲜,则下载 文件并为其计算MD5哈希。在我们的数据库中,我们存储 以前的哈希值,因此我们可以检查哈希是否已更改 上次我们吃杂烩的时候。
- 在某些资源中,哈希值会不断变化,因为 它们连接到一个可以动态生成文件的api。识别 这些,我们再次散列并检查散列是否在几秒钟内更改 自上次哈希计算以来。
由于URL可能存在临时连接和下载问题, 该代码具有多个重试功能,但延迟会增加。阿尔索 因为有很多请求要提出,而不是一个接一个地执行 首先,它们使用异步功能并发执行 已经添加到最新版本的python中。
用法
python run.py