Start here. This is the direct spoken answer to practice first.
Overview
Keeps Celery messages small, safe to deserialize, and compatible across rolling deployments.
I send small identifiers and immutable facts in Celery task arguments, not ORM objects or a snapshot of the whole domain model. JSON is a safer interoperability default than Python pickle when messages may cross trust or deployment boundaries. The worker reloads current data using the identifier and handles missing or already-completed records explicitly. Sensitive values stay out of broker payloads unless they are strictly required and protected.