queues

Task queue services.

These are the class that implement the interface to the queue managers.

The abstract TaskQueueService class is the interface each class has to implement.

  • RQTaskQueueService implements the service with Redis Queue.

  • CeleryTaskQueueService implements the service with Celery (TBD)

class eztaskmanager.services.queues.TaskQueueService[source]

Abstract base class for managing task queues.

abstract add(task)[source]

To be implemented in concrete subclasses.

abstract remove(task)[source]

To be implemented in concrete subclasses.

exception eztaskmanager.services.queues.TaskQueueException[source]

Dedicated exception for TaskQueue classes.

class eztaskmanager.services.queues.RQTaskQueueService[source]

A subclass of TaskQueueService that manages tasks using RQ (Redis Queue).

queue

The default RQ queue.

Type:

Queue

- add(task, at=None)

Enqueues a task to be executed either immediately or at a specific time.

- remove(task)

Cancels a task if it is currently in the queue.

add(task: Task)[source]

Add the task to the Redis queue.

If the task already has a scheduled_job_id, the existing job will be cancelled before creating a new one to prevent duplicate scheduling. This ensures idempotency when re-scheduling tasks after restarts.

Parameters:

task – The task to be added.

Returns:

The job created for the task, either scheduled or enqueued for immediate execution.

Raises:

TaskQueueException – If there is an error while launching the task.

fetch_job_with_next_time(task)[source]

Fetch the next job in the queue, with its execution time.

remove(task)[source]

Remove the job from the queue and updates the tasks’ values.

eztaskmanager.services.queues.available_service

alias of RQTaskQueueService

eztaskmanager.services.queues.get_task_service()[source]

Fetch the correct queue service, based on settings.