Page 1 of 1

Lebensdauer für Gunicorn -Arbeiter festlegen

Posted: 16 Apr 2025, 08:25
by Anonymous
Wir haben ein Projekt auf Fastapi. Es ist immer noch sehr leicht beladen, daher bekommen wir nach ein paar Stunden der Inaktivität einen solchen Fehler. Alle möglichen Rezepte mit Pool_Recycle und Hinzufügen von Manipulationen zum Dekorateur der DB -Operationen helfen nicht. Ich beschloss, das Problem zu umgehen - um die Arbeiter jede Stunde auszuschalten. Ich habe das folgende Schema ausgestellt: < /p>
Main.py
import asyncio
from fastapi import FastAPI
from .workers import worker_shutdown

app = FastAPI()

@app.on_event("startup")
async def worker_lifetime():
loop = asyncio.get_event_loop()
loop.create_task(worker_shutdown())
< /code>
worker.py
import os
import signal
import asyncio
import random

async def worker_shutdown():
pid = os.getpid()
delay = 3600 + random.randint(2,60)
await asyncio.sleep(delay)
os.kill(pid, signal.SIGTERM)
< /code>
All dies funktioniert wie beabsichtigt. Die Frage ist nur, ist es richtig? Wird es unerwartete Probleme verursachen? Es gab auch eine Idee, Worker_Shutdown mit Threading in einen separaten Thread zu verschieben.