codekingpro/portable-devtools
114k
1from eventlet import greenthread2 3from eventlet.zipkin import api4 5 6__original_init__ = greenthread.GreenThread.__init__7__original_main__ = greenthread.GreenThread.main8 9 10def _patched__init(self, parent):11 # parent thread saves current TraceData from tls to self12 if api.is_tracing():13 self.trace_data = api.get_trace_data()14 15 __original_init__(self, parent)16 17 18def _patched_main(self, function, args, kwargs):19 # child thread inherits TraceData20 if hasattr(self, 'trace_data'):21 api.set_trace_data(self.trace_data)22 23 __original_main__(self, function, args, kwargs)24 25 26def patch():27 greenthread.GreenThread.__init__ = _patched__init28 greenthread.GreenThread.main = _patched_main29 30 31def unpatch():32 greenthread.GreenThread.__init__ = __original_init__33 greenthread.GreenThread.main = __original_main__34 