Used for tracking the state of a celery task inside the running task function
Source code in django_spire/celery/tracker.py
| def __init__(self, celery_task: Task, update_interval_seconds: int = 5) -> None:
if update_interval_seconds < 5:
message = f'{self.__class__.__name__}: Update Interval must be at least 5 seconds'
raise ValueError(message)
self._celery_task = celery_task
self._update_interval_seconds = update_interval_seconds
self._start_time_seconds = time.time()
self._last_update_time_seconds = 0
self._state = states.PENDING
self._meta = CeleryTaskMeta()
self._additional_meta = None
self._cumulative_progress = 0
self._pending_future: Future | None = None
self._cumulative_target_value: int | None = None
|
set_cumulative_progress_target_value
Source code in django_spire/celery/tracker.py
| def set_cumulative_progress_target_value(self, value: int) -> None:
self._cumulative_target_value = value
|
update_state
Source code in django_spire/celery/tracker.py
| def update_state(self, state: str = states.PENDING, meta: dict | None = None) -> None:
self._state = state.upper()
self._additional_meta = meta
self._process_overdue_update()
|
update_count_progress
Source code in django_spire/celery/tracker.py
| def update_count_progress(
self, current_count: int, target_count: int, range_min: float = 0.0, range_max: float = 1.0
) -> None:
if range_min < 0.0 or range_min > range_max or range_max > 1.0:
message = 'Progress range is invalid'
raise ValueError(message)
self._meta.progress = range_min + (range_max - range_min) * (current_count / target_count)
self._process_overdue_update()
|
update_cumulative_progress
Source code in django_spire/celery/tracker.py
| def update_cumulative_progress(self, added_value: int) -> None:
self._cumulative_progress += added_value
if self._cumulative_target_value is None:
message = f'{self.__class__.__name__}: Cumulative Progress Target Value is None'
raise ValueError(message)
self._meta.progress = self._cumulative_progress / self._cumulative_target_value
self._process_overdue_update()
|
set_completed
Source code in django_spire/celery/tracker.py
| def set_completed(self):
self._meta.set_completed()
self._flush_futures()
|
set_started
Source code in django_spire/celery/tracker.py
| def set_started(self):
self._meta.set_started()
self.update_state(states.STARTED)
|
set_started_and_completing_soon
Source code in django_spire/celery/tracker.py
| def set_started_and_completing_soon(self):
self._meta.set_started_and_completing_soon()
self.update_state(states.STARTED)
|