跳转到主要内容

将API检索到的文件复制到S3存储桶或本地计算机。

项目描述

websnap

PyPI - Version PyPI - Downloads PyPI - License Coverage Code Style - Black

将API检索到的文件复制到S3存储桶或本地计算机。


安装

pip install websnap

快速入门

Websnap可以用作函数或作为CLI。

点击此处查看websnap概述图。

函数

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)
  • 配置 .ini 文件路径
  • 默认值期望在执行 websnap 包的同一目录下存在名为 config.ini 的文件
log_level (str)
file_logs (bool)
  • 启用轮转文件日志
s3_uploader (bool)
  • 启用将文件上传到 S3 桶
    backup_s3_count (int | None)
    • 将每个配置部分的文件复制并备份到配置的 S3 桶 backup_s3_count
    • 删除最后修改时间戳最旧的文件
    • 如果省略则不会复制或删除文件
    • 如果启用,则备份文件将被复制并赋予原始文件名,并在其后附加最后修改时间戳
    timeout (int)
    • 在超时前等待每个 HTTP 请求响应的秒数
    • 默认值是 32
    early_exit (bool)
    • 错误发生后启用程序提前终止
    • 如果省略,则记录错误但继续程序执行
    repeat_minutes (int | None)
    • repeat_minutes 分钟连续运行 websnap
    • 如果省略,则 websnap 不重复
    section_config (str | None)
    • 用于获取附加配置部分的文件或 URL
    • 如果省略,则默认值为 None,并且只使用 config 参数中指定的配置
    • 不能在配置中分配 "DEFAULT" 值
    • 目前仅支持 JSON 配置,并且只有在 config 参数也是一个 JSON 文件时才能使用
    • 重复的部分将覆盖 config 参数中传入的相同部分中的值

    用法: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_URLAWS_ACCESS_KEY_IDAWS_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的环境数据门户。

    许可证

    MIT许可证

    项目详情


    下载文件

    下载您平台的文件。如果您不确定该选择哪个,请了解有关 安装软件包 的更多信息。

    源分布

    websnap-2.0.0.tar.gz (21.9 kB 查看散列值)

    上传时间

    构建分布

    websnap-2.0.0-py3-none-any.whl (19.6 kB 查看散列值)

    上传时间 Python 3

    支持者

    AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面