diff --git a/queue_job/models/queue_job.py b/queue_job/models/queue_job.py index fd848861df..40322795c9 100644 --- a/queue_job/models/queue_job.py +++ b/queue_job/models/queue_job.py @@ -254,11 +254,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):