archivebox.workers.models

Module Contents

Classes

DefaultStatusChoices

ModelWithQueue

Durable queue fields and atomic lease operations shared by work rows.

Data

default_status_field

default_retry_at_field

RETRY_AT_MAX

ACTIVE_STATE_LEASE_SECONDS

logger

MODULE_PATH

REPO_ROOT

PACKAGE_ROOT

API

class archivebox.workers.models.DefaultStatusChoices[source]

Bases: django.db.models.TextChoices

QUEUED[source]

(‘queued’, ‘Queued’)

STARTED[source]

(‘started’, ‘Started’)

PAUSED[source]

(‘paused’, ‘Paused’)

SEALED[source]

(‘sealed’, ‘Sealed’)

archivebox.workers.models.default_status_field: django.db.models.CharField[source]

‘CharField(…)’

archivebox.workers.models.default_retry_at_field: django.db.models.DateTimeField[source]

‘DateTimeField(…)’

archivebox.workers.models.RETRY_AT_MAX[source]

‘datetime(…)’

archivebox.workers.models.ACTIVE_STATE_LEASE_SECONDS[source]

60

archivebox.workers.models.logger[source]

‘getLogger(…)’

archivebox.workers.models.MODULE_PATH[source]

‘resolve(…)’

archivebox.workers.models.REPO_ROOT[source]

None

archivebox.workers.models.PACKAGE_ROOT[source]

None

class archivebox.workers.models.ModelWithQueue[source]

Bases: django.db.models.Model

Durable queue fields and atomic lease operations shared by work rows.

Concrete models own lifecycle transitions. This mixin only owns the common database queue protocol: status, retry_at, pause/resume, and claims.

StatusChoices: ClassVar[type[django.db.models.TextChoices]][source]

None

INITIAL_STATE: ClassVar[str][source]

None

ACTIVE_STATE: ClassVar[str][source]

None

FINAL_STATES: ClassVar[tuple[str, ...]][source]

()

warn_on_save_outside_runner: ClassVar[bool][source]

True

status: django.db.models.CharField[source]

‘CharField(…)’

retry_at: django.db.models.DateTimeField[source]

‘DateTimeField(…)’

class Meta[source]

Bases: django_stubs_ext.db.models.TypedModelMeta

app_label[source]

‘workers’

abstract[source]

True

FINAL_OR_ACTIVE_STATES: ClassVar[tuple[str, ...]][source]

()

classmethod status_counts(queryset: django.db.models.QuerySet | None = None, statuses: collections.abc.Iterable[str] | None = None) → dict[str, int][source]
property RETRY_AT: datetime.datetime | None[source]
property STATE: str[source]
bump_retry_at(seconds: int = 10) → None[source]
property is_paused: bool[source]
safe_update(update_fields: dict[str, Any], *, refresh: bool = True, extra_filter: dict[str, Any] | None = None) → bool[source]
save(*args: Any, **kwargs: Any) → None[source]
pause(*, save: bool = True) → bool[source]
resume(*, when: datetime.datetime | None = None, save: bool = True) → bool[source]
update_and_requeue(*, refresh: bool = True, **kwargs: Any) → bool[source]
classmethod get_queue()[source]
classmethod claim_for_worker(obj: archivebox.workers.models.ModelWithQueue, lock_seconds: int = 60) → bool[source]
claim_processing_lock(lock_seconds: int = 60) → bool[source]
classmethod extend_choices(base_choices: type[django.db.models.TextChoices])[source]
classmethod StatusField(**kwargs: Any) → django.db.models.CharField[source]
classmethod RetryAtField(**kwargs: Any) → django.db.models.DateTimeField[source]