将 Datasette 事件转发到另一个实例
在 Datasette 所在的同一环境中安装此插件。
datasette install datasette-events-forward
如下配置此插件
{
"plugins": {
"datasette-events-forward": {
"api_token": "***",
"api_url": "https://stats.datasette.cloud/data/-/create",
"instance": "localhost"
}
}
}
然后,该插件将收集所有事件并将它们转发到指定的实例,将它们添加到名为 datasette_events
的表中,如果该表不存在则会创建它。
instance
键可用于区分报告给同一后端系统的不同实例。事件通过 ULID 进行标识,以确保即使在不同实例之间也是唯一的。
事件以最多 10 个为一批进行转发,发送频率不超过每 10 秒一次。
配置设置完整列表
api_url
:要将事件转发到的 Datasette 实例的写入 API URL。api_token
:发送事件时使用的 API 令牌。使用{"$env": "FORWARD_TOKEN"}
从FORWARD_TOKEN
环境变量中读取令牌。instance
:一个字符串,用于标识发送事件的实例。
api_url
可以是用于插入行的 https://datasette.example.com/data/datasette_events/-/insert
端点,也可以是用于创建表并向其中插入行的 https://datasette.example.com/data/-/create
端点。如果表尚不存在,应使用 /-/create
变体;否则使用 /-/insert
变体。
如果使用 /-/insert
,您的 API 令牌仅需要 insert-row
权限。对于 /-/create
,您还需要 create-table
权限。
以及控制向 Datasette 写入 API 发送事件批次的速率
batch_limit
:每个批次发送的事件数量,默认为 10。Datasette 写入 API 默认限制为 100 行,因此应将其设置为小于该值。max_rate
:在指定时间段内发送的最大交付 HTTP 请求数量,默认为 1。time_period
:速率限制的时间段,以秒为单位,默认为 10。
要在本地设置此插件,请首先检出代码。然后创建一个新的虚拟环境
cd datasette-events-forward
python3 -m venv venv
source venv/bin/activate
现在安装依赖项和测试依赖项
pip install -e '.[test]'
运行测试
pytest