20 lines
368 B
Python
20 lines
368 B
Python
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()
|