Skip to content

Spooler

my_spooler = Spooler.get_by_basename('myspooler')

# @Spooler.task() to  run on first available or to run on `my_spooler`:
@my_spooler.task(postpone=timedelta(seconds=1))
def run_me(a, b='c'):
    # We do:
    # * return True if task processed
    # * return None if task was ignored
    # * raise an exception to force task retry
    return True

# Now call this function as usual and it'll run in a spooler.
...
run_me('some', b='other')
...

Attributes

spooler_task_types

spooler_task_types = {}

Known task types handlers will store here runtime.

SpoolerTask heirs are automatically registered in runtime by SpoolerTask.init_subclass.


Classes

ResultProcessed

1
2
3
4
ResultProcessed(
    result: Any = None, 
    exception: Exception | None = None
)

TaskResult

Treat task as processed.


ResultRescheduled

1
2
3
4
ResultRescheduled(
    result: Any = None, 
    exception: Exception | None = None
)

TaskResult

Treat task as rescheduled (being due to retry).


ResultSkipped

ResultSkipped(result: Any = None, exception: Exception | None = None)

TaskResult

Treat task as skipped (ignored).


Spooler

Spooler(name: str)

Gives an access to uWSGI Spooler related functions.

Warning

To use this helper one needs to configure spooler(s) in uWSGI config beforehand.

my_spooler = Spooler.get_by_basename('myspooler')

# @Spooler.task() to  run on first available or to run on `my_spooler`:
@my_spooler.task(postpone=timedelta(seconds=1))
def run_me(a, b='c'):
    ...

# Now call this function as usual and it'll run in a spooler.
...
run_me('some', b='other')
...

task

.task = _TaskRegisterer()

Decorator. Used to register a function which should be run in Spooler.

1
2
3
4
5
6
my_spooler = Spooler.get_by_basename('myspooler')

# @Spooler.task() to  run on first available or to run on `my_spooler`:
@my_spooler.task(postpone=timedelta(seconds=1))  
def run_me(a, b='c'):
    ...

get_by_basename

1
2
3
.get_by_basename(
    name: str,  # (1)!
) -> Optional[Spooler]
  1. Directory base name. E.g.: 'mydir' to get spooler for '/somewhere/here/is/mydir'

Returns spooler object for a given directory name.

If there is more than one spooler with the same directory base name, the first one is returned.

If not found None is returned.


get_pids

.get_pids() -> list[int]

Returns a list of all spooler processes IDs.


get_spoolers

.get_spoolers() -> list[Spooler]

Returns a list of registered spoolers.


get_tasks

.get_tasks() -> list[str]

Returns a list of spooler jobs (filenames in spooler directory).


read_task_file

1
2
3
.read_task_file(
    path: str,  # (1)!
) -> dict
  1. The relative or absolute path to the task to read.

Returns a spooler task information.


send_message_raw

1
2
3
4
5
6
7
.send_message_raw(
    message: str,  # (1)!
    spooler: Union[str,  Spooler] = None,  # (2)!
    priority: int | None = None,  # (3)!
    postpone: datetime | timedelta | None = None,  # (4)!
    payload: Any = None,  # (5)!
) -> str
  1. Message to pass using spooler.

  2. The spooler (id or directory) to use. Specify the ABSOLUTE path of the spooler that has to manage this task

  3. Number. The priority of the message. Larger - less important.

    1
    .. warning:: This works only if you enable `order_tasks` option in `spooler.set_basic_params()`.
    
  4. Postpone message processing till.

  5. Object to pickle and pass within message.

Sends a message to a spooler.


set_period

.set_period(seconds: int) -> bool

Sets how often the spooler runs.


SpoolerFunctionCallTask

SpoolerFunctionCallTask(name: str, message: str, payload: Any)

SpoolerTask

Function call type. Allows delegating function calls to spoolers.


SpoolerTask

SpoolerTask(name: str, message: str, payload: Any)

Consolidates information for a spooler task.


process

.process() -> TypeTaskResult

Processes the task.

Supported results: * None - mark as ignored (skipped) * TaskResult - result type logic * exception - mark to retry * other - mark as processed


TaskResult

TaskResult(result: Any = None, exception: Exception | None = None)

Represents a task processing result.