API: Fix sequential requests

FastAPI is kinda weird with queueing. If an await is used within an
async def, requests aren't executed sequentially. Get the sequential
requests back by using a semaphore to limit concurrent execution from
generator functions.

Also scaffold the framework to move generator functions to their own
file.

Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
kingbri
2023-12-03 22:54:34 -05:00
parent e740b53478
commit ed6c962aad
2 changed files with 26 additions and 5 deletions

10
generators.py Normal file
View File

@@ -0,0 +1,10 @@
from asyncio import Semaphore
from typing import AsyncGenerator
generate_semaphore = Semaphore(1)
# Async generation that blocks on a semaphore
async def generate_with_semaphore(generator: AsyncGenerator):
async with generate_semaphore:
async for result in generator():
yield result