import asyncio from typing import Awaitable, Callable _queue: asyncio.Queue = asyncio.Queue() async def enqueue(job: Callable[[], Awaitable[None]]) -> int: await _queue.put(job) return _queue.qsize() async def worker(): while True: job = await _queue.get() try: await job() finally: _queue.task_done()