Most observability guides stop at the HTTP layer. You add OpenTelemetry to your FastAPI app, traces start showing up in your backend, and everything looks great — until you realize that the moment a request hands off work to a Celery worker, the trace disappears. The worker runs in a completely separate process. The span context doesn't travel with the task. What should be one unified trace becomes two unrelated fragments. This is one of the most common observability gaps in Python backend systems, and it's surprisingly underserved in the documentation. In this article, we'll close it. We'll instrument a FastAPI application and a Celery worker so that every task a request spawns appears as a child span in the same trace — giving you end-to-end visibility from HTTP request to background job completion.…