Wie bekomme ich die Anzahl der Hintergrundaufgaben, die derzeit in einer Fastapi -Anwendung ausgeführt werden?Python

Python-Programme
Guest
 Wie bekomme ich die Anzahl der Hintergrundaufgaben, die derzeit in einer Fastapi -Anwendung ausgeführt werden?

Post by Guest »

Die folgende run_tasks Fastapi Route Handler spielt eine Hintergrundaufgabe für jeden HTTP -Override ">

Code: Select all

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"}
Wenn ein Sigterm Signal an den Prozess gesendet wird, der diese FastAPI -App ausführt, wird in den Protokollen die folgende Sequenz beobachtet:
< Br /> Warten auf die Erfüllung von Hintergrundaufgaben erscheint. Endlich, Das Protokoll zeigt "Warten auf die Anwendung zum Herunterfahren", und die
-Anwendung wird dann heruntergefahren. Laufen derzeit? Ich möchte die Anzahl der verbleibenden Aufgaben nach jeder Aufgabe abgeschlossen (d. H. Nach dem Druck (f "Task {task_id} abgeschlossen") .
Mein Ziel ist Um "0" am Ende zu sehen, damit alle Hintergrundaufgaben vor dem Herunterfahren der Anwendung abgeschlossen sind. zu beenden. Ich möchte jedoch sicherstellen, dass dies auch geschieht, wenn die App in einem Container in einem Kubernetes -Pod läuft. Dies ist entscheidend für die korrekte Abstimmung des Parameters des Pods (siehe die entsprechende Beendigung der Pods -Dokumentation).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post