Код: Выделить всё
import asyncio
import time
from fastapi import APIRouter
from starlette.background import BackgroundTasks
router = APIRouter()
async def background_task(sleep_time: int, task_id: int):
print(f"Task {task_id} started")
await asyncio.sleep(sleep_time) # Simulate a long-running task
print(f"Task {task_id} completed")
@router.post("/run-tasks")
async def run_tasks(background_tasks: BackgroundTasks, sleep_time: int):
background_tasks.add_task(background_task, sleep_time, int(time.time()))
print(len(background_tasks.tasks))
return {"message": "NEW SLEEP query arg background task started"}
< Br /> В ожидании выполнения фоновых задач появляются. Наконец Журнал показывает «ожидание выключения приложения», а затем приложение
выключается. в настоящее время работает? Я хотел бы распечатать количество оставшихся задач после каждого выполнения задачи (то есть после печати (f "task {task_id} завершен")) .
Моя цель - Чтобы увидеть «0» в конце, чтобы быть уверенным, что все фоновые задачи выполнены, перед выключением приложения. < /p>
Я понимаю, что приложение Fastapi, работающее в Python к заканчивать. Тем не менее, я хочу убедиться, что это также происходит, когда приложение работает внутри контейнера в капсуле Kubernetes. Это имеет решающее значение для правильной настройки параметра GrancentGracePeriodSeconds POD (см. Соответствующее завершение документации PODS).
Подробнее здесь: https://stackoverflow.com/questions/788 ... pi-applica