flask应用程序的opentracing支持

Flask-OpenTracing的Python项目详细描述


此包允许通过The OpenTracing Project在烧瓶应用程序中进行分布式跟踪。一旦生产系统与真正的并发性竞争或分成许多服务,关键的(以前很容易的)任务就会变得困难:面向用户的延迟优化、后端错误的根本原因分析、关于现在分布式系统的不同部分的通信等。分布式跟踪从一开始就跟随一个请求。从移动/浏览器一直到微服务。

由于核心服务和库采用opentracing,应用程序构建器不再承担向自己的代码添加基本跟踪工具的任务。通过这种方式,开发人员可以使用他们喜欢的工具构建他们的应用程序,并从内置的跟踪工具中获益。OpenCACKIN实现存在于主要的分布式跟踪系统中,并且可以通过一行配置更改来绑定或交换。

如果您想了解有关底层python api的更多信息,请访问pythonsource code

如果要从0.x系列迁移,可能需要读取breaking changes的列表。

安装

运行以下命令:

$ pip install Flask-Opentracing

用法

此烧瓶扩展允许使用opentracing api跟踪烧瓶应用程序。全部 它需要的是使用 OpenTracing跟踪程序的实例。您可以跟踪到您站点的所有请求,或者使用函数装饰器跟踪特定的单个请求。

注意:可选参数在这两种情况下都是烧瓶的任意数量的属性(作为字符串)。请求在创建的span上设置为标记

初始化

flasktracing包装opentracing支持的跟踪程序实例。要创建flasktracing对象,可以直接传入跟踪对象,也可以传入返回跟踪对象的可调用对象。例如:

importopentracingfromflask_opentracingimportFlaskTracingopentracing_tracer=## some OpenTracing tracer implementationtracing=FlaskTracing(opentracing_tracer,...)

importopentracingfromflask_opentracingimportFlaskTracingdefinitialize_tracer():...returnopentracing_tracertracing=FlaskTracing(initialize_tracer,...)

跟踪所有请求

importopentracingfromflask_opentracingimportFlaskTracingapp=Flask(__name__)opentracing_tracer=## some OpenTracing tracer implementationtracing=FlaskTracing(opentracing_tracer,True,app,[optional_args])

跟踪单个请求

importopentracingfromflask_opentracingimportFlaskTracingapp=Flask(__name__)opentracing_tracer=## some OpenTracing tracer implementationtracing=FlaskTracing(opentracing_tracer)@app.route('/some_url')@tracing.trace(optional_args)defsome_view_func():...returnsome_view

手动访问跨距

为了访问请求的跨度,我们提供了一个方法:cTIT> FraskTrace.GETYSPAN(请求)< /cIT>,它返回请求的跨度,如果它存在且未完成。这可用于将重要事件记录到范围、设置标记或创建子范围以跟踪非rpc事件。如果没有传入请求,则将使用当前请求。

跟踪rpc

如果你想创建一个RPC并继续一个现有的跟踪,你可以将当前的跨度注入RPC。例如,如果发出一个http请求,以下代码将继续跨线路跟踪:

@tracing.trace()defsome_view_func(request):new_request=some_http_requestcurrent_span=tracing.get_span(request)text_carrier={}opentracing_tracer.inject(span,opentracing.Format.TEXT_MAP,text_carrier)fork,vintext_carrier.iteritems():new_request.add_header(k,v)...# make request

示例

查看并运行两个烧瓶应用程序的示例,请参见examples 使用集成的opentracing跟踪器。

This tutorial有一个分步指南,指导您将烧瓶打开跟踪Jaeger一起使用。

从0.x中断更改

从1.0版开始,与以前的版本相比发生了一些更改:

  • FlaskTracer已重命名为FlaskTracing,尽管FlaskTracing 仍可用作已弃用的名称。
  • 当在FlaskTracing创建时间传递Application对象时, trace_all_requests默认为True
  • 当没有提供opentracing.Tracer时,FlaskTracing将依赖于 全球追踪。

更多信息

如果您有兴趣进一步了解opentracing标准,请访问opentracing.iojoin the mailing list。如果您想在您的项目中实现opentracing并需要帮助,请随时在community@opentracing.io向我们发送一条消息。

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

推荐PyPI第三方库


热门话题
java Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误