我有 celery 定期任务,需要在每次运行后运行 postgres VACUUM 查询,否则此任务会占用大量硬盘空间。
最后我尝试在任务中运行 VACUUM,但出现错误:
DatabaseError: VACUUM cannot run inside a transaction block
我尝试在调用 VACUUM 之前应用@transaction.commit_manually
装饰器并执行此操作,但出现此错误:transaction.commit()
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK
有没有办法在芹菜任务中做 VACUUM ?或者以某种方式禁用任务事务逻辑?