Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Modify the get_locked method in DBTaskResultQuerySet to allow retriev…
…al of multiple locked jobs at once.
  • Loading branch information
rroblf01 committed Nov 7, 2025
commit d44e4551f1b3171055ba3dd3663886a046414727
8 changes: 4 additions & 4 deletions django_tasks/backends/database/models.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import datetime
import logging
import uuid
from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar
from typing import TYPE_CHECKING, Any, Generic, TypeVar

import django
from django.conf import settings
from django.core.exceptions import SuspiciousOperation
from django.db import models
from django.db.models import F, Q
from django.db.models import F, Q, QuerySet
from django.db.models.constraints import CheckConstraint
from django.utils import timezone
from django.utils.module_loading import import_string
Expand Down Expand Up @@ -80,11 +80,11 @@ def finished(self) -> "DBTaskResultQuerySet":
return self.failed() | self.succeeded()

@retry()
def get_locked(self) -> Optional["DBTaskResult"]:
def get_locked(self, size: int = 1) -> QuerySet["DBTaskResult"]:
"""
Get a job, locking the row and accounting for deadlocks.
"""
return self.select_for_update(skip_locked=True).first()
return self.select_for_update(skip_locked=True)[:size]


class DBTaskResult(GenericBase[P, T], models.Model):
Expand Down