У меня есть периодическая задача сельдерея, которая должна запускать postgres VACUUM-запрос после каждого прогона, иначе эта задача съедает много места на жестком диске.Запуск postgres VACUUM внутри задачи сельдерея
Я попытался запустить VACUUM внутри задачи в конце, но получил сообщение об ошибке:
DatabaseError: VACUUM cannot run inside a transaction block
Я пытался применить @transaction.commit_manually
декоратора и делать transaction.commit()
перед вызовом VACUUM, но получил эту ошибку:
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK
Есть ли способ сделать ВАКУУМ внутри задачи сельдерея? Или каким-то образом отключить логику транзакций задачи?
Если он питается дисковым пространством, возможно, это потому, что ему это нужно (разбиение диска на разделы для mvcc и т. Д.). Разве все еще есть лишнее пространство, когда вы запускаете подобные транзакции несколько раз? –
Да, без ВАКУУМА. Эта проблема о вводе новых строк в таблицу с огромным текстовым полем. Это моя задача. – ramusus