使用不同的远程数据源使本地数据存储库保持最新。

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光盘服务中检索数据。

开发

  1. 创建一个python环境并激活它
    $ python3 -m venv . &&source bin/activate
    
  2. 安装开发环境:
    (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一起使用。

告诉我你是否写了一个新的驱动程序,这样我就可以把它包括在列表中了。

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

推荐PyPI第三方库


热门话题
java两个构造函数?   java for(inti:x)做什么?   java如何将一个bean的构造函数参数传递给嵌套bean   java从易趣链接提取项目ID   java多线程BufferedReader   安卓全新应用程序在R.java中抛出“语法错误,插入“}”以完成类体”   java Spring启动依赖注入请求范围的bean   java给定的时间,然后约定和异常处理。和莫基托和朱尼特在一起   与Android Studio的java Oracle数据库连接   在web服务器(Heroku)上承载可运行jar文件(Discord bot)的java   java如何每隔n秒在imageview中更改图像   java不理解“volatile”关键字   java使用JPA编写自定义SQL查询   java如何使用filechannel作为参数来编写对象