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
        show_progress=True,                           # Show progress bar
        force_rerun=False,                            # Don't force rerun completed tasks
    )
    async def task(id: int) -> dict | None:
        await asyncio.sleep(0.1)
        try:
            if random.randint(1, 2) == 1:
                raise Exception(f"Task {id=} failed!")
            return {"id": id, "data": f"Task {id=} finished!"}
        except Exception as e:
            print(f"Error: {e}")
            return None

    # 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
  • 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.4.tar.gz (4.7 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.4-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: recoverable_async_task-0.2.4.tar.gz
  • Upload date:
  • Size: 4.7 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.4.tar.gz
Algorithm Hash digest
SHA256 a29196674e8489a64f4526389e6044f547e0721272a4f9da8121fcd83d582750
MD5 0233101918a614d0882075f2520d9ec3
BLAKE2b-256 97441bcb628495caa3b7fd3a61519c0735f934ce5855f42a90488f21297e66e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for recoverable_async_task-0.2.4.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.4-py3-none-any.whl.

File metadata

File hashes

Hashes for recoverable_async_task-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9b096cba5bd0475d0fbc3db529f55fc7ac6baa1817b106dce5ac7c9caf2049a5
MD5 9d591a9b761f40f3472f99d0ce8382b9
BLAKE2b-256 db184c69ba7c1dd384f8ee4db3a5fc966ce0bf61c4c43fabdc7a500f045f594f

See more details on using hashes here.

Provenance

The following attestation bundles were made for recoverable_async_task-0.2.4-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