It's a python based asyncio task schedular/queue mechanism
Project description
AsyncIO Task Runner (Coro Runner)
The AsyncIO Task Runner (Coro Runner) is a Python utility designed for managing concurrent asynchronous tasks using the built-in asyncio module. It provides an efficient way to execute multiple tasks in a single-threaded environment with customizable concurrency limits.
This project leverages asyncio (introduced in Python 3.4) to simplify handling of asynchronous workloads, making it ideal for lightweight, scalable applications.
Features
- Configurable Concurrency: Define the number of concurrent tasks when initializing the runner.
- Efficient Task Management: Run multiple tasks concurrently with streamlined execution control.
- Worker Queue: Multiple queue can be configued along with their priority.
Planned Enhancements
- Monitoring Tool Integration: Support for real-time task monitoring and analytics.
- Low-Level API: Features such as callbacks, acknowledgments, and error handling for advanced use cases.
- Robust Logging: Detailed logging to track task execution and debug issues.
Getting Started
Installation
To install coro-runner, use pip:
pip install coro-runner
Full documentation
Quickstart
-
Define and schedule tasks:
from coro_runner import CoroRunner runner = CoroRunner(concurrency=10) # Add your tasks from anywhere b runner.add_task(your_task, args=[1,2,3], kwargs={"test": "OK!"}) # your_task must be a async function
Declare the runner once and call from everywhere.
Prerequisites
- Python 3.12 or later
- Poetry for dependency management
Installation and Setup
-
Clone the repository:
git clone https://github.com/iashraful/async-coro-runner.git cd async-coro-runner
-
Activate the virtual environment:
poetry shell -
Install dependencies:
poetry install
Running Tests
Run the test suite to verify the setup:
pytest -s
Sample Output:
Task started: Task-1
Task ended: Task-1
...
Example Usage
The project includes an example API implemented with FastAPI. It demonstrates how to use the task runner to manage asynchronous tasks.
Starting the API
-
Run the API server:
uvicorn example:app --reload
-
Trigger tasks using the endpoint:
GET /fire-task?count=25
How to Contribute
Contributions are welcome! Follow these steps to get started:
- Fork the repository and create a new branch for your feature or bug fix.
- Write tests for your changes.
- Open a pull request with a clear description of your contribution.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coro_runner-0.2.7.tar.gz.
File metadata
- Download URL: coro_runner-0.2.7.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e62853eeb9a4bb12da54173c7ad7192c4114dc754b65a7928cfc3c8ebbb566d7
|
|
| MD5 |
7e8874c53639c1ff7a6b2a4377baa16a
|
|
| BLAKE2b-256 |
f1e92f91b122186b55612178bb1bddb51d59fa7694fc87497b41b6feb0f88513
|
File details
Details for the file coro_runner-0.2.7-py3-none-any.whl.
File metadata
- Download URL: coro_runner-0.2.7-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c61e275d293ec988b6266f99f539903edf8282a9c8a55f9e24e0e5f752b6de8e
|
|
| MD5 |
f37e214093520ac7b62769e8a3023ea6
|
|
| BLAKE2b-256 |
0fedbc62fd5624cbc1d7db833676f520720f6db8019d5aa76201b5409fcbf524
|