aws_xray_sdk/core/models/dummy_entities.py (56 lines of code) (raw):
import os
from .noop_traceid import NoOpTraceId
from .traceid import TraceId
from .segment import Segment
from .subsegment import Subsegment
class DummySegment(Segment):
"""
A dummy segment is created when ``xray_recorder`` decide to not sample
the segment based on sampling rules.
Adding data to a dummy segment becomes a no-op except for
subsegments. This is to reduce the memory footprint of the SDK.
A dummy segment will not be sent to the X-Ray daemon. Manually creating
dummy segments is not recommended.
"""
def __init__(self, name='dummy'):
no_op_id = os.getenv('AWS_XRAY_NOOP_ID')
if no_op_id and no_op_id.lower() == 'false':
super().__init__(name=name, traceid=TraceId().to_id())
else:
super().__init__(name=name, traceid=NoOpTraceId().to_id(), entityid='0000000000000000')
self.sampled = False
def set_aws(self, aws_meta):
"""
No-op
"""
pass
def put_http_meta(self, key, value):
"""
No-op
"""
pass
def put_annotation(self, key, value):
"""
No-op
"""
pass
def put_metadata(self, key, value, namespace='default'):
"""
No-op
"""
pass
def set_user(self, user):
"""
No-op
"""
pass
def set_service(self, service_info):
"""
No-op
"""
pass
def apply_status_code(self, status_code):
"""
No-op
"""
pass
def add_exception(self, exception, stack, remote=False):
"""
No-op
"""
pass
def serialize(self):
"""
No-op
"""
pass
class DummySubsegment(Subsegment):
"""
A dummy subsegment will be created when ``xray_recorder`` tries
to create a subsegment under a not sampled segment. Adding data
to a dummy subsegment becomes no-op. Dummy subsegment will not
be sent to the X-Ray daemon.
"""
def __init__(self, segment, name='dummy'):
super().__init__(name, 'dummy', segment)
no_op_id = os.getenv('AWS_XRAY_NOOP_ID')
if no_op_id and no_op_id.lower() == 'false':
super(Subsegment, self).__init__(name)
else:
super(Subsegment, self).__init__(name, entity_id='0000000000000000')
self.sampled = False
def set_aws(self, aws_meta):
"""
No-op
"""
pass
def put_http_meta(self, key, value):
"""
No-op
"""
pass
def put_annotation(self, key, value):
"""
No-op
"""
pass
def put_metadata(self, key, value, namespace='default'):
"""
No-op
"""
pass
def set_sql(self, sql):
"""
No-op
"""
pass
def apply_status_code(self, status_code):
"""
No-op
"""
pass
def add_exception(self, exception, stack, remote=False):
"""
No-op
"""
pass
def serialize(self):
"""
No-op
"""
pass