针对ASGI应用程序和框架的非官方ddtrace集成

ddtrace-asgi的Python项目详细描述


ddtrace asgi公司

Build StatusCoveragePackage version

非官方的ASGI应用程序和框架集成。在

对于任何ASGI web框架,例如Starlette、FastAPI、Quart等,都应该无缝工作

Note:此项目处于alpha阶段。在

要求

  • Python 3.6+。在
  • ^必须安装{a4}才能使用ddtrace-run命令。在
  • 必须安装并运行Datadog Agent才能将跟踪有效地发送到Datadog APM。在

安装

pip install ddtrace-asgi

快速启动

要在每个HTTP请求上自动向Datadog APM发送跟踪,请将ASGI应用程序包装在TraceMiddleware周围:

^{pr2}$

然后在为应用程序提供服务时使用ddtrace-run。例如,如果与Uvicorn一起食用:

ddtrace-run uvicorn app:app

有关使用ddtrace的更多信息,请参阅^{}官方存储库。在

示例

Starlette

fromddtrace_asgi.middlewareimportTraceMiddlewarefromstarlette.applicationsimportStarletteapp=Starlette()app.add_middleware(TraceMiddleware,service="my-starlette-app")

快速API

fromddtrace_asgi.middlewareimportTraceMiddlewarefromfastapiimportFastAPIapp=FastAPI()app.add_middleware(TraceMiddleware,service="my-fastapi-app")

API参考

TracingMiddleware

classTracingMiddleware:def__init__(self,app,tracer=None,service="asgi",tags=None,distributed_tracing=True):...

一个ASGI中间件,它向Datadog APM发送HTTP请求的跟踪。在

参数

  • app—一个[ASGI]应用程序。在
  • ^{1{str}可选{ema8}对象。默认为全局ddtrace.tracer对象。在
  • service-(可选)将在Datadog上显示的服务的名称。在
  • ^{str1}$tags-(可选)附加到所有请求范围的默认标记。字典或逗号分隔的标记字符串(例如"env:staging, app:shop")。另请参见Tagging。在
  • 分布式跟踪-(可选)是否启用distributed tracing。在

变更日志

这个项目的所有显著变化都将记录在这个文件中。在

格式基于Keep a Changelog。在

0.3.0-2019年11月15日

添加

  • 允许在所有请求范围上设置默认标记。(拉动24)

0.2.2-2019年11月3日

添加

  • 现在除了源代码分发(sdist)之外,还提供了二进制分布(wheel)。(拉动16)

0.2.1-2019年10月31日

固定

  • 提高对违反ASGI协议的弹性。(拉动11)

0.2.0-2019年10月30日

更改

  • TraceMiddlewaretracerservicedistributed_tracing参数现在只是关键字。(拉动10)

添加

  • 默认情况下,TraceMiddlewaretracer现在是全局ddtrace.tracer。(拉动10)

0.1.0-2019年10月23日

初始版本。在

添加

  • 添加TracingMiddleware。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?