OpenNEM澳大利亚能源数据

opennem的Python项目详细描述


OpenNEM能源市场数据访问

OpenNEM项目旨在使国家电力市场(NEM)数据的丰富性更容易被更多的用户访问。在

该工具包支持从各种网络下载、镜像和访问能源数据

位于https://opennem.org.au的项目主页

在Docker上提供https://hub.docker.com/r/opennem/opennem

目前支持:

要求

  • Python3.7+(参见.python-versionpyenv
  • Docker和docker-compose如果您想运行本地开发堆栈

快速启动

用诗歌:

$ poetry install
$ source .venv/bin/activate
$ ./init.sh

使用pip+venv:

^{pr2}$

安装

您可以使用python pip安装此项目:

$ pip install opennem

也可以选择docker:

$ docker pull opennem/opennem

与sqlite支持捆绑在一起。其他数据库驱动程序是可选的,默认情况下不安装。安装受支持的数据库驱动程序:

博士后:

$ pip install psycopg2

安装附加组件

该软件包包含可安装的额外模块:

$ poetry install -E postgres

额外服务列表包括:

  • postgres-Postgres数据库驱动程序
  • server-API服务器

使用

列出爬虫

$ scrapy list

爬行

$ scrapy crawl au.nem.current.dispatch_scada

发展

此项目使用新的pyproject.toml项目和生成规范文件。要使用它,请使用可安装在Windows、MacOS和Linux上的poetry工具:

https://python-poetry.org/docs/

诗歌安装说明见:

https://python-poetry.org/docs/#installation

默认情况下,poetry将在您的主元数据目录中安装虚拟环境。一个好的替代方法是使用以下设置在本地为每个项目安装venv

$ poetry config virtualenvs.in-project true

这将在名为.venv的文件夹中的项目文件夹中创建虚拟环境。默认情况下,git会忽略此文件夹。在

使用诗歌设置虚拟环境和安装需求:

$ poetry install

要激活虚拟环境:

$ poetry shell

或者您可以只激活标准venv

$ source .venv/bin/activate

从环境变量读取设置。环境变量可以从文件夹根目录下的.env文件中读取。通过将.env.sample文件复制到.env来设置环境。示例文件中的默认值映射到docker-compose.yml中的设置

有一个docker-compose文件将带来一个本地数据库:

$ docker-compose up -d

使用alembic启动数据库迁移:

$ alembic upgrade head

在根文件夹中运行scrapy以获取选项:

$ scrapy

opennemcli接口提供了其他选项和设置:

$ opennem -h

Visual Studio代码的设置存储在.vscode中。使用pylintblack和{}以及{}中定义的设置来保持代码的格式化和linte

测试

测试在tests/

使用以下内容运行测试:

$ pytest

运行后台测试观察程序

$ ptw

生成发布

脚本build-release.sh将标记一个新版本,构建docker映像,标记git版本,推送到GitHub并推送最新版本 发布到PyPi

体系结构概述

该项目使用Scrapy从受支持的能源市场获取数据,SQLAlchemy用于存储数据,Alembic用于数据库迁移。数据库存储已经用sqlite、postgres和mysql进行了测试。在

scrapy架构概述:

代码导航

  • opennem/spiders中的Spider定义
  • 正在处理opennem/pipelines中爬网的管道
  • 支持能源市场的数据库模型存储在opennem/db/models

部署爬网程序

您可以通过以下方式将爬网程序部署到scrapyd服务器:

$ scrapyd-deploy

如果您没有该命令并且它不可用,请使用以下命令安装它:

$ pip install scrapyd-client

它将安装scrapyd-client工具。项目设置从scrapy.cfg读取在

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

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?