我有芹菜定期任务,需要在每次运行后运行postgres VACUUM查询,否则这个任务会消耗大量的硬盘空间。
我试图在任务结束时运行VACUUM inside任务,但得到了错误:
DatabaseError: VACUUM cannot run inside a transaction block我试图在调用VACUUM之前应用@transaction.commit_manually装饰器并执行transaction.commit(),但得到了这个错误:
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK有没有办法在芹菜里做真空任务?或者以某种方式禁用任务事务逻辑?
发布于 2013-11-22 12:52:44
一般而言,除非您刚刚进行了大量的批量删除,否则您通常不应该进行清理。只需确保autovacuum正在运行,并且已启用。它将在后台执行此操作,您不必担心它。
其次,您可以发出一个系统命令来运行vacuumdb命令行工具。这将在一个单独的会话中完成。
https://stackoverflow.com/questions/19141060
复制相似问题