milvus/shards/tracer/__init__.py
2019-11-06 16:45:23 +08:00

44 lines
1.2 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)