Skip to Content
快速开始Python 后端 SDK

Python 后端 SDK 快速开始

让 Python 后端服务(Django / Flask / FastAPI / Celery / 脚本)上报应用日志 + 分布式 trace span,并经 W3C traceparent 与端上 SDK 端到端贯通。v0 为纯标准库实现,无第三方依赖

对应 SDK:sdks/python-backend(包名 argus-backend)。 跨语言 API 对照见 后端 SDK API 矩阵 

安装

pip install argus-backend

配置数据源名称(DSN)——从 Console 项目设置获取,格式详见 DSN 与 HMAC 签名

export ARGUS_DSN='argus://<public_key>:<secret_key>@<host:port>/<project_id>'

初始化

import argus_backend # 读 ARGUS_DSN 环境变量 client = argus_backend.init(service_name="checkout-api")

或显式传 DSN 并调参:

client = argus_backend.ArgusClient( "argus://pub:sec@ingest.argus-tools.app/myproj", service_name="worker", flush_interval=5.0, # 后台每 5s flush;设 0 则不起后台线程(需手动 flush) max_batch=512, # 单批最多条数(服务端硬上限 1000) max_buffer=10000, # 缓冲上限;溢出 drop-oldest(保留最新窗口) )

上报日志与 trace span

client.log("info", "order created", attributes={"order_id": "o-123"}) client.log("error", "payment failed", attributes={"reason": "card_declined"}) # trace span:with 块结束自动 end,块内抛异常自动标记 error 状态 with client.start_span("process_payment", kind="server", attributes={"order.id": "o-123"}) as span: span.set_attribute("amount", 19.9) # 子 span:传 parent=span.context() 继承同一条 trace with client.start_span("charge_card", parent=span.context()) as child: ... client.close() # 停止后台 flush 并最后上报一次

端到端 Trace:把链路传给下游

start_span 产生的 span 上下文可注入出站请求头,下游服务的 Argus SDK 会继承同一条 trace。trace span 经统一 EventBatch 上报到 POST /v1/eventschannel="trace"),与 go / node / java / rust 后端 SDK 的 JSON wire 逐字节一致。详见 分布式追踪

行为约定

方面行为
批量log() 只入缓冲,后台线程按 flush_interval 批量上报,或显式 flush()
重试5xx / 网络错误指数退避重试(默认 3 次);4xx(鉴权 / payload)立即丢弃不重试
背压缓冲超 max_buffer 时 drop-oldest(保留最新窗口),client.dropped 可查丢弃数
HMAC每批按 METHOD\nPATH\nTS\nsha256hex(BODY) canonical 做 HMAC-SHA256 签名

所有上报均为 best-effort:上报失败只丢弃、绝不影响业务请求

下一步