Как получить количество фоновых задач, запущенных в данный момент в приложении FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить количество фоновых задач, запущенных в данный момент в приложении FastAPI?

Сообщение Anonymous »

Приведенный ниже обработчик маршрута FastAPI run_tasks создает фоновую задачу при каждом HTTP-вызове конечной точки /run-tasks.

Код: Выделить всё

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"}
Когда сигнал SIGTERM отправляется процессу, выполняющему это приложение FastAPI, в журналах наблюдается следующая последовательность:
  • Появляется сообщение «Ожидание завершения фоновых задач».
  • После этого в журнал записываются сообщения типа «Задание {some_id} выполнено».
  • Наконец, в журнале отображается сообщение «Ожидание завершения работы приложения», после чего
    приложение закрывается.
Есть ли способ узнать, сколько фоновые задачи в данный момент выполняются? Я хотел бы напечатать количество оставшихся задач после завершения каждой задачи (т. е. после печати(f"Задача {task_id} завершена")).
Моя цель — чтобы увидеть «0» в конце, чтобы быть уверенным, что все фоновые задачи завершены до завершения работы приложения.
Я понимаю, что приложение FastAPI, работающее на Python, должно ожидать выполнения всех фоновых задач. закончить. Однако я хочу, чтобы это также происходило, когда приложение запускается внутри контейнера внутри модуля Kubernetes. Это крайне важно для правильной настройки параметра TerminationGracePeriodSeconds модуля (см. соответствующую документацию по прекращению работы модулей).

Подробнее здесь: https://stackoverflow.com/questions/788 ... pi-applica
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»