diff --git a/queue_job/models/queue_job.py b/queue_job/models/queue_job.py index 9376fab07d..bdde5e0f7b 100644 --- a/queue_job/models/queue_job.py +++ b/queue_job/models/queue_job.py @@ -286,11 +286,19 @@ def autovacuum(self): """ for channel in self.env["queue.job.channel"].search([]): deadline = datetime.now() - timedelta(days=int(channel.removal_interval)) - jobs = self.search( - [("date_done", "<=", deadline), ("channel", "=", channel.complete_name)] - ) - if jobs: - jobs.unlink() + while True: + jobs = self.search( + [ + ("date_done", "<=", deadline), + ("channel", "=", channel.complete_name), + ], + limit=1000, + ) + if jobs: + jobs.unlink() + self.env.cr.commit() + else: + break return True def requeue_stuck_jobs(self, enqueued_delta=5, started_delta=0):