From 104ac7377c7dc449aeeb52d947b333f2409e590f Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Sat, 28 Dec 2024 14:08:40 +0300 Subject: [PATCH] fix --- Dockerfile | 2 ++ app/routers/take.py | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 224e023..d905ed4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,4 +8,6 @@ RUN pip install -r requirements.txt COPY . . +ENV PYTHONUNBUFFERED 1 + ENTRYPOINT ["python", "main.py"] diff --git a/app/routers/take.py b/app/routers/take.py index c2a1679..8bd59a8 100644 --- a/app/routers/take.py +++ b/app/routers/take.py @@ -1,5 +1,3 @@ -import asyncio -import collections import fastapi import pydantic import typing @@ -9,7 +7,6 @@ from app.storage.mongo import tasks DEFAULT_RETRY_AFTER = 0.2 -locks = collections.defaultdict(asyncio.Lock) router = fastapi.APIRouter() @@ -23,10 +20,13 @@ class Response(pydantic.BaseModel): task: Task|None -@router.get('/api/v1/take', responses={500: {'detail': 'Internal server error'}}) +@router.get('/api/v1/take') async def execute(queue: typing.Annotated[str, fastapi.Header()]) -> Response: - async with locks[queue]: + try: task = await tasks.take_task(queue) + except Exception as e: + print('GOT ERROR', e) + return Response(task=None) if not task: return Response(task=None) # retry_after_config = configurator.get_config('retry_after')