将API检索到的文件复制到S3存储桶或本地计算机。
项目描述
websnap
将API检索到的文件复制到S3存储桶或本地计算机。
安装
pip install websnap
快速入门
Websnap可以用作函数或作为CLI。
函数
from websnap import websnap
# Execute websnap using default arguments
websnap()
# Execute websnap passing arguments
websnap(file_logs=True, s3_uploader=True, backup_s3_count=7, early_exit=True)
CLI
要在终端中访问CLI文档,请执行
websnap_cli --help
函数参数 / CLI选项
点击展开函数参数 / CLI选项
函数参数
参数 | 类型 | 默认值 |
---|---|---|
config |
str |
"config.ini" |
log_level |
str |
"INFO" |
file_logs |
bool |
False |
s3_uploader |
bool |
False |
backup_s3_count |
int | None |
None |
timeout |
int |
32 |
early_exit |
bool |
False |
repeat_minutes |
int | None |
None |
section_config |
str | None |
None |
CLI选项
选项 | 快捷键 | 默认值 |
---|---|---|
--config |
-c |
config.ini |
--log_level |
-l |
INFO |
--file_logs |
-f |
False |
--s3_uploader |
-s |
False |
--backup_s3_count |
-b |
None |
--timeout |
-t |
32 |
--early_exit |
-e |
False |
--repeat_minutes |
-r |
None |
--section_config |
-n |
None |
描述
函数参数 / CLI选项 |
描述 |
---|---|
config (str) |
|
log_level (str) |
|
file_logs (bool) |
|
s3_uploader (bool) |
|
backup_s3_count (int | None) |
|
timeout (int) |
|
early_exit (bool) |
|
repeat_minutes (int | None) |
|
section_config (str | None) |
|
用法:S3 桶
点击以展开 S3 桶使用说明
将 API 获取的文件复制到 S3 桶。
使用 Python 的 AWS SDK (Boto3) 将 API 文件添加和备份到 S3 桶。
示例
函数
# The s3_uploader argument must be passed as True to copy files to a S3 bucket
# Copies files to a S3 bucket using default argument values
websnap(s3_uploader=True)
# Copies files to a S3 bucket and repeat every 1440 minutes (24 hours),
# file logs are enabled and only 3 backup files are allowed for each config section
websnap(file_logs=True, s3_uploader=True, backup_s3_count=3, repeat_minutes=1440)
CLI
-
以下 CLI 选项 必须 使用以启用 websnap 上传文件到 S3 桶:
--s3_uploader
-
使用默认参数值将文件复制到 S3 桶
websnap_cli --s3_uploader
-
将文件复制到 S3 桶并每 1440 分钟(24 小时)重复,启用文件日志,并且每个配置部分仅允许 3 个备份文件
websnap_cli --file_logs --s3_uploader --backup_s3_count 3 --repeat_minutes 1440
配置
- 以下环境变量是 必需的:
ENDPOINT_URL
、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
- 必需 提供有效的
.ini
或.json
配置文件。 - Websnap 期望配置为同一目录下 websnap 包执行时的
config.ini
。- 但是,这可以通过
config
函数参数(或 CLI--config
选项)进行更改。
- 但是,这可以通过
- 下表中所有键都是 必需的。
S3 配置示例文件
格式 | 示例配置文件 |
---|---|
.ini |
src/websnap/config_templates/s3_config_template.ini |
.json |
src/websnap/config_templates/s3_config_template.json |
环境变量
支持在 .env
文件中设置环境变量。
示例 .env
文件
ENDPOINT_URL=https://dreamycloud.com
AWS_ACCESS_KEY_ID=1234567abcdefg
AWS_SECRET_ACCESS_KEY=hijklmn1234567
环境变量 | 描述 |
---|---|
ENDPOINT_URL |
用于构造 S3 客户端的 URL |
AWS_ACCESS_KEY_ID |
AWS 访问密钥 ID |
AWS_SECRET_ACCESS_KEY |
AWS 密钥访问密钥 |
其他部分(每个 API URL 端点一个)
- 每个从 API 获取的文件都需要其 自己的配置部分!
- 部分名称可以是任何名称,建议使用与复制文件相关的名称。
示例带有键前缀的 S3 配置部分配置
[resource]
url=https://www.example.com/api/resource
bucket=exampledata
key=subdirectory_resource/resource.xml
示例不带键前缀的 S3 配置部分配置
[project]
url=https://www.example.com/api/project
bucket=exampledata
key=project.json
键 | 值描述 |
---|---|
url |
文件将被检索的 API URL 端点 |
bucket |
文件将要写入的存储桶 |
键 |
带有扩展名的文件名,可以可选地包含前缀 |
用法:本地机器
点击展开本地机器用法
将API获取的文件复制到本地机器。
示例
函数
# Write files retrieved from an API to local machine using default argument values
websnap()
# Write files retrieved from an API locally and repeats every 60 minutes (1 hour),
# file logs are enabled
websnap(file_logs=True, repeat_minutes=60)
CLI
-
使用默认参数值将复制的文件写入本地机器
websnap_cli
-
本地写入复制的文件,每60分钟(1小时)重复一次,启用文件日志
websnap_cli --file_logs --repeat_minutes 60
配置
- 无论是功能使用还是CLI使用,都必须有一个有效的
.ini
或.json
配置文件。 - Websnap 期望配置为同一目录下 websnap 包执行时的
config.ini
。- 但是,这可以通过
config
函数参数(或 CLI--config
选项)进行更改。
- 但是,这可以通过
- 从API获取的每个文件都需要其自己的部分。
- 如果省略可选的
directory
键/值对,则文件将被写入程序执行的目录。
配置示例文件
格式 | 示例配置文件 |
---|---|
.ini |
src/websnap/config_templates/config_template.ini |
.json |
src/websnap/config_templates/config_template.json |
部分(每个API URL端点一个)
示例本地机器配置部分
[project]
url=https://www.example.com/api/project
file_name=project.json
directory=projectdata
键 | 值描述 |
---|---|
url |
文件将被检索的 API URL 端点 |
file_name |
带有扩展名的文件名 |
directory (可选) |
文件将要写入的本地目录名称 |
日志
点击展开日志
Websnap支持可选的文件日志轮换。
- 必须使用以下CLI选项
--file_logs
来启用Websnap支持轮换文件日志。- 在功能使用中,必须传递以下参数来支持轮换文件日志:
file_logs=True
- 在功能使用中,必须传递以下参数来支持轮换文件日志:
- 如果未在配置
[DEFAULT]
部分中指定日志密钥,则将使用下表中的默认值。 log_when
期望由日志模块TimedRotatingFileHandler使用的值。- 点击此处获取有关如何使用TimedRotatingFileHandler的更多信息。
- 默认值导致文件日志每天轮换一次,且不删除备份日志文件。
配置
示例日志配置
[DEFAULT]
log_when=midnight
log_interval=1
log_backup_count=7
[DEFAULT]
部分
键 | 默认值 | 值描述 |
---|---|---|
log_when |
D |
指定间隔类型 |
log_interval |
1 |
间隔持续时间(必须是正整数) |
log_backup_count |
0 |
如果非零,则最多保留log_backup_count 个文件,最旧的日志文件将被删除(必须是非负整数) |
最小下载大小
点击展开最小下载大小
Websnap支持可选地指定文件必须达到的最小下载大小(以千字节为单位),才能从配置的API URL端点复制。
- 默认情况下,最小默认大小为0 kb。
- 除非在配置中指定,否则这意味着Websnap可以下载任何大小的文件。
- 配置的最小下载大小必须是非负整数。
- 如果API URL端点的内容小于配置的大小
- 将记录错误,程序继续到下一个配置部分。
- 如果启用CLI选项
--early_exit
(或功能参数early_exit=True
),则程序将提前终止。
配置
示例最小下载大小配置
[DEFAULT]
min_size_kb=1
[DEFAULT]
部分
键 | 默认值 | 值描述 |
---|---|---|
min_size_kb |
0 |
以千字节为单位的最小下载大小(必须是非负整数) |
作者
Rebecca Kurup Buchholz
目的
此项目是为了方便EnviDat的弹性并支持服务器维护期间的持续运行而开发的。
EnviDat是瑞士联邦林业、雪和景观研究所WSL的环境数据门户。
许可证
项目详情
下载文件
下载您平台的文件。如果您不确定该选择哪个,请了解有关 安装软件包 的更多信息。
源分布
websnap-2.0.0.tar.gz (21.9 kB 查看散列值)
构建分布
websnap-2.0.0-py3-none-any.whl (19.6 kB 查看散列值)