我有一个Python Flask
应用程序,它使用requests
库。我正在尝试在应用程序中实现OpenTracing。简化版本为:
from flask_opentracing import FlaskTracer
from flask import Flask
from jaeger_client import Config
from opentracing_instrumentation.client_hooks import install_all_patches
from os import getenv
import requests
JAEGER_HOST = getenv('JAEGER_HOST', 'localhost')
def initialise_tracer():
config = Config(
config={
'local_agent': {
'reporting_host': 'jaeger'
}
},
service_name='opentracing_test',
validate=True
)
return config.initialize_tracer()
app = Flask(__name__)
tracer = FlaskTracer(initialise_tracer, trace_all_requests=True, app=app)
install_all_patches()
@app.route('/foo')
def foo():
r = requests.get('http://localhost/bar')
return 'foo : ' + r.text
@app.route('/bar')
def bar():
return 'bar'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=80)
由于将trace_all_requests
赋给FlaskTracer
,所以跟踪所有端点。使用requests
库发出的所有请求都将被跟踪,因为install_all_patches()
来自{
我的'/foo'
端点向'/bar'
发出请求。当我访问'/foo'
端点并查看跟踪时,我可以看到两个独立的跟踪:一个只包含'/foo'
,另一个同时包含requests
GET和对{'/foo'
->;GET
->;'/bar'
的跟踪。在
是否需要手动设置每个requests
上的头来传递跨距?看起来这正是requests
猴子补丁应该做的。。。在
目前没有回答
相关问题 更多 >
编程相关推荐