Плавня

Устройство

Как работает очередь

Механика

Приоритеты и справедливостьВежливая остановкаВоркеры и ретраи

Как работает очередь Плавни

Плавня 1.1.6 · документация разработчика

Содержание главы

Плавня — встраиваемая очередь фоновых задач: библиотека в процессе приложения, а не отдельный сервис. Задачи — функции в вашем коде, очередь — таблица в вашей же БД.

Модель

producer ──enqueue──> таблица задач ──poll──> worker pool ──> ваш код
                        (статусы: new/running/done/failed)

Один и тот же процесс может быть и продюсером, и воркером. Отдельный воркер-процесс необязателен, но полезен для тяжёлых задач, чтобы не грузить интерактивный процесс.

Хранение

Таблица с индексами по (status, run_at). Выборка — SELECT ... WHERE status='new' AND run_at <= now() ORDER BY priority DESC, run_at LIMIT n FOR UPDATE SKIP LOCKED. Конкурентные воркеры не забирают одну задачу дважды.

Доставка

Гарантия — at-least-once: задача, упавшая посреди выполнения, будет повторена. Обработчики должны быть идемпотентными или использовать task.idempotency_key.

Примечание. Ровно-один-раз Плавня не даёт принципиально — как и любая очередь поверх транзакционной БД.
Приоритеты и справедливость →
© 2026 Плавня · изменено 2026-10-31