milvus/tracing/__init__.py
peng.xu e0498e081d update for server test
update for server test
2019-10-17 14:15:31 +08:00

37 lines
1.1 KiB
Python

from contextlib import contextmanager
def empty_server_interceptor_decorator(target_server, interceptor):
return target_server
@contextmanager
def EmptySpan(*args, **kwargs):
yield None
return
class Tracer:
def __init__(self, tracer=None,
interceptor=None,
server_decorator=empty_server_interceptor_decorator):
self.tracer = tracer
self.interceptor = interceptor
self.server_decorator = server_decorator
def decorate(self, server):
return self.server_decorator(server, self.interceptor)
@property
def empty(self):
return self.tracer is None
def close(self):
self.tracer and self.tracer.close()
def start_span(self, operation_name=None,
child_of=None, references=None, tags=None,
start_time=None, ignore_active_span=False):
if self.empty:
return EmptySpan()
return self.tracer.start_span(operation_name, child_of,
references, tags, start_time, ignore_active_span)