Create asynchronous tasks from Python functions
Project description
ICIJ's async worker library
Installation
With AMQP:
pip install icij-worker["amqp"]
With neo4j:
pip install icij-worker["neo4j"]
Usage
Create an async app and register tasks
Create asynchronous task tailored for long running Python functions:
Given the following pure Python function inside the app.py
module:
def long_running_task(greeted: str) -> str:
greeting = f"Hello {greeted} !"
return greeting
decorate your function with ICIJApp
class and register a new task:
from icij_worker import AsyncApp
my_app = AsyncApp(name="my_app")
@my_app.task
def long_running_task(greeted: str) -> str:
greeting = f"Hello {greeted} !"
return greeting
this will register the long_running_task
function under the long_running_task
task name.
Optionally add progress handlers for a better task monitoring:
@my_app.task
async def long_running_task(
greeted: str,
progress: Optional[Callable[[float], Awaitable]] = None
) -> str:
if progress is not None:
await progress(0.0)
greeting = f"Hello {greeted} !"
if progress is not None:
await progress(100.0)
return greeting
Launch a async worker pool
Start a worker pool using:
icij-worker workers start "app.my_app"
provide worker pool options using:
icij-worker workers start -c worker_config.json -n 2 --backend multiprocessing "app.my_app"
depending on the worker configuration additional setup might be required.
Async worker implementations
Worker asynchronous backends
Implemented
- multiprocessing for CPU bound tasks
To be implemented
- asyncio for I/O bound tasks
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
File details
Details for the file icij_worker-0.11.10.tar.gz
.
File metadata
- Download URL: icij_worker-0.11.10.tar.gz
- Upload date:
- Size: 55.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c726f34af43dcc2405b4b3570cf99f1e77907d097c2d0b5ca3dfb05c3db7930a |
|
MD5 | ee2a7494386060ec6622af23b37f4d71 |
|
BLAKE2b-256 | d2e38c929aaff3131df6833f094c08d5ada1dccdc6385b1d7a962bfc188fd05b |
File details
Details for the file icij_worker-0.11.10-py3-none-any.whl
.
File metadata
- Download URL: icij_worker-0.11.10-py3-none-any.whl
- Upload date:
- Size: 74.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce27ac268214ce546023c57831b77aa60b48ca73cbb4ad359a8177915313c130 |
|
MD5 | 910183cdfde2c603eb6654fc2b15b454 |
|
BLAKE2b-256 | d5041fe70bef8099db89a256262d973ea96b3e8f3060f439eb4ea05d146ee4bc |