我在试着设置我的
jaeger_client
我体内的示踪剂
Flask
应用程序
__init__
(来源于
瓶
)应用程序运行后一直挂着
from tornado.platform.epoll import EPollIOLoop
里面
ioloop.py
第243行(
tornado==4.5.3
)
这是里面的原始代码片段
爱因斯坦
导致了绞刑:
tracer_config = Config(
config={
'sampler': {'type': 'const', 'param': 1},
'local_agent': {'reporting_host': '<SOME_IP>'},
'logging': True
},
service_name='hello-world')
self.tracer = tracer_config.initialize_tracer()
我不明白为什么,最后把范围缩小到这段代码,它也挂起了:
from flask import Flask
from tornado import ioloop
from threading import Thread
def foo():
return ioloop.IOLoop()
class A(Flask):
def __init__(self):
super(A, self).__init__(__name__)
print("Initializing...")
t = Thread(target=foo)
t.start()
t.join()
print("Done initializing.")
app = A()
运行以下命令(假定脚本名为
test.py
)将清楚地显示悬挂物:
#/bin/sh
FLASK_APP=test.py flask run
(
Flask 1.0.2
)
知道是什么导致了绞刑吗?
解决方案
杰格客户
初始化问题
我最终用
瓶
的内置函数
self.before_first_request(self._init_jeager_tracer)
里面
爱因斯坦
以确保在任何请求进入之前初始化跟踪程序。在哪里?
_init_jeager_tracer
是跟踪程序初始化函数。