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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie bekomme ich die Anzahl der Hintergrundaufgaben, die derzeit in einer Fastapi -Anwendung ausgeführt werden?

by Guest » 22 Feb 2025, 14:55

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).

Top