Chỉ truyền id (primary key), rồi để task tự query lại.
Tham số của task phải đi qua broker nên bị serialize (mặc định JSON). Một model instance vừa không serialize được bằng JSON, vừa là ảnh chụp dữ liệu tại thời điểm đẩy task — đến lúc worker chạy, bản ghi trong DB có thể đã đổi, và bạn sẽ ghi đè bằng dữ liệu cũ.
python
@shared_task
def send_invoice(order_id):
order = Order.objects.get(pk=order_id) # always the current state
...
send_invoice.delay(order.id) # not send_invoice.delay(order)Hệ quả thứ hai: payload nhỏ gọn, message trong queue nhẹ, không bị vỡ khi model đổi field.
Lưu ý kèm theo: task chạy trên tiến trình khác nên bản ghi có thể đã bị xoá trước khi worker nhận việc — bắt Model.DoesNotExist và kết thúc êm thay vì để task fail và retry vô ích.