使用不同的远程数据源使本地数据存储库保持最新。
databird的Python项目详细描述
数据鸟
定期从不同来源检索数据。
databird
包仅提供了一个框架,用于计划和运行使本地数据文件存储区与各种远程源保持最新状态所需的任务。
远程源可以是任何东西(例如ftp服务器、ecmwf、http api、sql数据库,…),只要有一个databird驱动程序可用于特定源。
用法
databird由配置文件配置,并由
$ databird retrieve -c /etc/databird/databird.conf
# or (as the above is the default)
$ databird retrieve
您可以将配置文件存储在任何地方,例如,定期将上述命令作为cron job运行。
此外,还需要一些RQ工作人员:
$ rq worker databird
这将启动一个工人。你应该用一个主管来启动多个工人。
配置
下面的配置示例定义了一个存储库,它由来自ftp://cddis.nasa.gov/gnss/data/daily/的每日gnss数据填充。
主配置文件(通常是databird.conf
)可能是这样的:
general: root: /data/repos # root path for data repositories num-workers: 16 # max number of async workers include: "databird.conf.d/*.conf" # include config files
通常,您可以在任何文件中配置任何内容,因为所有配置文件都合并到一个配置树中。include
选项是一个异常,因为它只能在顶部配置文件中声明。
然后在databird.conf.d/cddis.conf
中,您可以配置配置文件和存储库:
profiles: nasa_cddis: driver: standard.FtpDriver configuration: host: cddis.nasa.gov user: anonymous password: "" tls: False repositories: nasa_gnss: description: Data from NASAs Archive of Space Geodesy Data profile: nasa_cddis period: 1 day delay: 2 days start: 2019-01-01 targets: status: "{time:%Y}/cddis_gnss_{iso_date}.status" configuration: user: anonymous # this could override 'user' from profile root: "/gnss/data/daily" patterns: status: "{time:%Y}/{time:%j}/{time:%y%j}.status"
使用此配置调用databird时,将实现以下功能:
- 文件夹
/data/repos/nasa_gnss/
中的存储库已创建 - 对于每一天,都需要像
2019/nasa_gnss_2019-01-20.status
这样的文件 - 如果该文件丢失,请从
ftp://cddis.nasa.gov/gnss/data/daily/2019/020/19020.status
检索
- 如果缺少许多文件,则异步检索数据
这个例子使用了standard.FTPDriver
。
监控
使用databird webmonitor [PORT]
启动Web界面。
由于databird使用rq来管理作业,您还可以检查RQ/docs/monitoring上的选项。
驱动程序
任何人都可以编写驱动程序(见下文)。目前,以下驱动程序可用:
包括:
standard.FilesystemDriver
:从本地文件系统检索数据standard.CommandDriver
:运行任意shell命令standard.FtpDriver
:从ftp服务器检索数据
气候:
climate.EcmwfDriver
:通过其api从欧洲中期天气预报中心(ecmwf)检索数据climate.C3SDriver
:通过他们的api从哥白尼气候变化服务(c3s)检索数据climate.GesDiscDriver
:从nasa地球数据ges光盘服务中检索数据。
开发
- 创建一个python环境并激活它
$ python3 -m venv . &&source bin/activate
- 安装开发环境:
(databird) $ pip install -r requirements-dev.txt
编写新驱动程序
驱动程序在命名空间包databird-drivers
中发布。每个人都可以开发和共享驱动程序。
安装databird
并运行mr.bob以创建新的驱动程序包:
(databird) $ cd $HOME/projects
(databird) $ python -m mrbob.cli databird.blueprints:driver
在回答了一些问题之后,将创建一个新目录databird-driver-<chosen_name>
。
让asume<chosen_name> = foo
,那么您的驱动程序通常在名为FooDriver()
的类中的databird/drivers/foo/foo.py
中实现。
在有更多的文档可用之前,您必须查看代码以了解如何编写驱动程序。
其他人可以将它与driver: foo.FooDriver
一起使用。
告诉我你是否写了一个新的驱动程序,这样我就可以把它包括在列表中了。