Part 5: Production Patterns
The Gap Between "It Works" and "It Works in Production"
1. Structured Logging with Trace IDs
# tracing.py
from __future__ import annotations
import logging
import uuid
from contextvars import ContextVar
trace_id: ContextVar[str] = ContextVar("trace_id", default="no-trace")
def new_trace() -> str:
tid = str(uuid.uuid4())[:8]
trace_id.set(tid)
return tid
class TraceFilter(logging.Filter):
def filter(self, record: logging.LogRecord) -> bool:
record.trace_id = trace_id.get()
return True
def configure_logging() -> None:
handler = logging.StreamHandler()
handler.addFilter(TraceFilter())
formatter = logging.Formatter(
"%(asctime)s [%(trace_id)s] %(levelname)s %(name)s β %(message)s"
)
handler.setFormatter(formatter)
logging.basicConfig(level=logging.INFO, handlers=[handler])2. Token Budget and Cost Tracking
3. Rate Limiting
4. Graceful Degradation
5. Health Checks and Readiness
6. The Mistakes I Made (So You Don't Have To)
Putting It All Together
Key Takeaways
Series Complete
Part
What You Built
Last updated