Почему в Celery не рекомендуется передавать тяжёлые ORM-объекты в качестве аргументов задачи? Чем это заменить?

Передавайте стабильный ID и минимальные сериализуемые параметры, а ORM-объект загружайте в worker. Объект может быть тяжёлым, устаревшим и связанным с уже закрытой сессией.

Короткий ответ

Что ответить на собеседовании

Передавайте стабильный ID и минимальные сериализуемые параметры, а ORM-объект загружайте в worker. Объект может быть тяжёлым, устаревшим и связанным с уже закрытой сессией.

Подробный разбор

Ответ с пояснениями

Передавайте стабильный ID и минимальные сериализуемые параметры, а ORM-объект загружайте в worker. Объект может быть тяжёлым, устаревшим и связанным с уже закрытой сессией.

Поставку задачи согласуйте с commit транзакции, иначе worker может не увидеть ещё не сохранённую запись. Учитывайте удаление или изменение объекта между постановкой и выполнением. Если важны именно исходные данные, передайте небольшой версионированный snapshot, а не весь внутренний ORM-граф. Не используйте небезопасную сериализацию ради удобства; повторное выполнение должно иметь понятную идемпотентность.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее