Skip to main content

`recoverable-async-task` is a Python library that streamlines the handling of asynchronous tasks through its `RecoverableAsyncTask` class, with the added benefit of **supporting task checkpointing and resumption**. This feature ensures that tasks can pick up from where they left off in the event of unexpected failures.

Project description

recoverable-async-task

English | 中文文档

recoverable-async-task is a lightweight Python library that focuses on providing JSONL-based checkpoint recovery functionality for async tasks. It automatically records task execution states, allowing tasks to resume from where they left off after interruption, making it ideal for handling large-scale, time-consuming asynchronous tasks.

Installation

pip install recoverable-async-task

Quick Start

Here's a simple example demonstrating how to use the make_recoverable decorator to handle async tasks:

import asyncio
import random
from recoverable_async_task import make_recoverable


async def main():
    @make_recoverable(
        storage_path_name=".checkpoint/example-task",  # Checkpoint file storage path
        raise_on_error=False,                         # Don't raise exceptions on task failure
        show_progress=True,                           # Show progress bar
        force_rerun=False,                            # Don't force rerun completed tasks
    )
    async def task(id: int) -> dict:
        await asyncio.sleep(0.1)
        if random.randint(1, 2) == 1:
            raise Exception(f"Task {id=} failed!")
        return {"id": id, "data": f"Task {id=} finished!"}

    # Execute tasks and collect results
    task_ids = list(range(10))  # Create 10 test tasks
    async for result in task.as_completed(task_ids):
        print(result)


if __name__ == "__main__":
    asyncio.run(main())

Configuration Parameters

The make_recoverable decorator supports the following parameters:

  • storage_path_name: str, optional
    • Storage path for checkpoint files
    • Defaults to the decorated function's name
  • raise_on_error: bool, defaults to True
    • Controls whether to raise exceptions on task failure
    • When False, skips failed tasks and continues execution
  • show_progress: bool, defaults to True
    • Whether to display a progress bar
    • Shows completed/total tasks count
  • force_rerun: bool, defaults to False
    • Whether to force rerun completed tasks
    • Useful for scenarios requiring recalculation

Checkpoint Recovery Mechanism

When task execution fails:

  1. Successfully completed task states are saved in the checkpoint file
  2. When rerunning the program, completed tasks are automatically skipped
  3. Only previously failed or unexecuted tasks will be processed
  4. This process can be repeated until all tasks are completed

Concurrency Control

This library focuses on providing checkpoint recovery functionality. For more powerful concurrency control features, we recommend using the adaptio library.

Development Guide

This project uses uv for environment management:

# Install dependencies
uv sync

# Run tests
pytest

# Format code
pre-commit run --all-files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recoverable_async_task-0.2.2.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

recoverable_async_task-0.2.2-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file recoverable_async_task-0.2.2.tar.gz.

File metadata

  • Download URL: recoverable_async_task-0.2.2.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for recoverable_async_task-0.2.2.tar.gz
Algorithm Hash digest
SHA256 44fe98cc5b896b7eb6c26c11c7be76f1fb60c1c472385b8496f0eef3354c39a4
MD5 b2162755838fb7aec6fb90f08a81e93d
BLAKE2b-256 4cbc9cf9d2ecef9f9e6ead9ed7856cb71c8b7fe5b02bf2a31857896102fe2de7

See more details on using hashes here.

Provenance

The following attestation bundles were made for recoverable_async_task-0.2.2.tar.gz:

Publisher: publish-to-pypi.yml on Haskely/recoverable-async-task

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file recoverable_async_task-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for recoverable_async_task-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ba11541f6a3eaafe467b9ac71a969f683e8bb2a615d82c24e00f7d922ade584c
MD5 5d35d122f6710d8c33929ba76db6234a
BLAKE2b-256 a3293ca704f229de211b0cdd1a29fca8bb9d72a72dd011bfbb3aad0d8792bec3

See more details on using hashes here.

Provenance

The following attestation bundles were made for recoverable_async_task-0.2.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on Haskely/recoverable-async-task

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page