In this blog post, we explore the intricacies of distributed tracing in asynchronous systems, focusing on the challenges posed by message consumption APIs. We delve into the structure of traces and spans, discussing how instrumentation plays a crucial role in collecting these data points. The author highlights the importance of safe scopes for restoring trace context during iteration, emphasizing the limitations of built-in Python constructs like `__enter__` and `__exit__`. However, they propose an alternative approach by instrumenting the `__iter__` method of lists, providing a clean solution that works for many applications. The post concludes with a call to action, encouraging readers to try out the Lumigo OpenTelemetry Distro for Python, which offers a generous trial and free tier for those interested in distributed tracing.