未提供项目描述
项目描述
烧瓶批次
在 http 层批处理多个请求。Flask-Batch 受到 谷歌云存储如何进行批处理的启发。
它将/batch路由添加到您的 API,该路由可以针对您的 API 服务器端执行批量 HTTP 请求。客户端使用multipart/mixed内容类型将多个请求包装在一个请求中。
安装
pip install Flask-Batch
# to include the dependencies for the batching client
pip install Flask-Batch[client]
入门
服务器
from flask import Flask
from flask_batch import add_batch_route
app = Flask(__name__)
add_batch_route(app)
# that's it!
客户
客户端包装请求会话。
from flask_batch.client import Batching
import json
alice_data = bob_data = {"example": "json"}
with Batching("http://localhost:5000/batch") as s:
alice = s.patch("/people/alice/", json=alice_data)
bob = s.patch("/people/bob/", json=bob_data)
alice # <Response [200]>
alice.json() # {"response": "json"}
为什么是批处理?
从客户端到服务器的往返时间通常很长。批处理请求减少了高 RTT 的代价,而不会增加请求并行化的复杂性。
<图>批处理正确
API 设计人员通常会为特定操作创建自定义批处理端点。为执行批量操作创建自定义 API 端点通常会很笨重。每一个最终都是独一无二的。这意味着需要维护更多代码和更多错误。
可能很难推断批量 json API 端点。例如,错误会发生什么?批量操作是否失败?继续?回滚?
在 HTTP 层进行批处理会产生易于推理的清晰且预期的行为。HTTP 批处理的行为方式与批处理中发送的所有单个请求的行为方式相同。
地位
该项目处于alpha 阶段。我希望最终将它作为烧瓶扩展获得批准。