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.3.tar.gz (4.9 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.3-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: recoverable_async_task-0.2.3.tar.gz
  • Upload date:
  • Size: 4.9 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.3.tar.gz
Algorithm Hash digest
SHA256 541a56092203a66fd9a836f553194edfee0317737d22afd7aa1e7c1cc5534f8a
MD5 24540eee4b4f864d0c6c2d28d55b39a2
BLAKE2b-256 483fa8355c59e40a6eb2075bab23fc01b958468741fd46de2dbe9a10b57734d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for recoverable_async_task-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4bec55989175f6db6b5986262ce0981de1b57f2edf74ccd546558f4ec0e9d82d
MD5 bdd58fa0a0cd518ef0f0800ce020e03f
BLAKE2b-256 1e053bcc10c54e1ead22819c24203aefd1ee4f5ed6c0d60f09aefd6a30a4d1c1

See more details on using hashes here.

Provenance

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