Django 运行postgres真空内芹菜任务

Django 运行postgres真空内芹菜任务,django,postgresql,celery,vacuum,Django,Postgresql,Celery,Vacuum,我有一个芹菜周期性任务,每次运行后都需要运行postgres真空查询,否则这个任务会占用大量硬盘空间 我试图在最后运行真空内部任务,但出现错误: DatabaseError: VACUUM cannot run inside a transaction block 在调用VACUUM之前,我尝试手动应用@transaction.commit\udecorator并执行transaction.commit(),但出现以下错误: TransactionManagementError: Transa

我有一个芹菜周期性任务,每次运行后都需要运行postgres真空查询,否则这个任务会占用大量硬盘空间

我试图在最后运行真空内部任务,但出现错误:

DatabaseError: VACUUM cannot run inside a transaction block
在调用VACUUM之前,我尝试手动应用
@transaction.commit\u
decorator并执行
transaction.commit()
,但出现以下错误:

TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK

有没有办法做芹菜里面的真空任务?或者以某种方式禁用任务事务逻辑?

一般来说,除非您刚刚进行了大量删除,否则通常不需要真空。只需确保自动真空正在运行并已启用。它将在后台执行此操作,您无需担心


其次,您可以启动一个系统命令来运行vacuumdb命令行工具。这将在一个单独的会话中完成。

如果它占用磁盘空间,可能是因为它需要它(mvcc的磁盘页拆分等)。。。当您多次运行类似的事务时,它是否还在占用额外的空间?是的,没有真空。这个问题是关于在具有巨大文本字段的表中插入新行的。这就是我的任务。