Skip to main content

An asyncio-based asynchronous task runner, ready to use out of the box.

Project description

asyncrunner

English | 中文

asyncrunner is an asyncio-based asynchronous task runner designed to help you easily implement concurrent task management. It supports task timeout control, concurrency limits, and callback functions after task completion, meeting most asynchronous task scheduling needs.

Installation

You can install the package via pip:

pip install async-task-runner

Or build and install using Poetry:

# Build package (in project root directory)
poetry build

# Install the generated package (assuming the generated file is async-task-runner-1.0.0-py3-none-any.whl)
pip install dist/async-task-runner-1.0.0-py3-none-any.whl

Features

  • High-performance Async Scheduling: Implemented based on asyncio, fully utilizing Python's asynchronous features
  • Concurrency Control: Uses asyncio.Semaphore to control the number of simultaneously running tasks
  • Task Timeout Control: Uses asyncio.wait_for to set timeout for each task
  • Task Callbacks: Supports triggering callback functions after task completion
  • Flexible Task Scheduling Interface:
    • run_tasks: Schedule tasks through a list of task dictionaries, each task dictionary should contain target (task coroutine function) and other parameters
    • run_tasks_by_list: Schedule tasks through parameter lists, suitable for cases where parameters are provided in list/tuple or dictionary form

Usage

import asyncio
from asyncrunner import AsyncRunner

async def example_task(x):
    await asyncio.sleep(1)
    return x * 2

async def main():
    # Create runner instance
    runner = AsyncRunner(max_workers=3)  # Limit concurrent tasks to 3
    
    # Prepare tasks
    tasks = [
        {"target": example_task, "args": (i,)} for i in range(5)
    ]
    
    # Run tasks and get results
    results = await runner.run_tasks(tasks)
    print(results)  # [0, 2, 4, 6, 8]

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

License

This project is licensed under the MIT License.

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

async_task_runner-1.0.3.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

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

async_task_runner-1.0.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file async_task_runner-1.0.3.tar.gz.

File metadata

  • Download URL: async_task_runner-1.0.3.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for async_task_runner-1.0.3.tar.gz
Algorithm Hash digest
SHA256 ab995709daa71da027e2fadd6887aace65448d667bc9debed219461bb61ed889
MD5 f109543ba2417fca780ab7b349773cd4
BLAKE2b-256 464a2473530c62167a12e38c18fc54396d99ddcc7ab47a4d1a3f7ab61833e700

See more details on using hashes here.

Provenance

The following attestation bundles were made for async_task_runner-1.0.3.tar.gz:

Publisher: python-publish.yml on 869413421/asyncrunner

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

File details

Details for the file async_task_runner-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for async_task_runner-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 28e37e2c8d835e1e7806171700f09b3f742d4092a84047f2cd2cd8eadbf34e93
MD5 3ce8bbc5e047b22eb3503eb23f3c7978
BLAKE2b-256 83cb18a13140a3ab1c482128df365a76cecd26b7f2469e0a3d600565a3eac427

See more details on using hashes here.

Provenance

The following attestation bundles were made for async_task_runner-1.0.3-py3-none-any.whl:

Publisher: python-publish.yml on 869413421/asyncrunner

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