fix(api): remount nicht-blockierend (Netz-Mount darf API-Start nicht haengen)
Ampel / ampel (push) Successful in 28s
Ampel / ampel (push) Successful in 28s
Vorfall 24.07.: Beim API-Start blockierte der synchrone CIFS-Schreibtest in alle_remounten()/mounten() im Kernel (wait_for_response), als der SMB-Server langsam war -> ~5 min "Waiting for application startup", kein Endpoint bedient (bis der soft-Mount per Timeout abbrach). startup_event() lief isoliert sauber, also war es der blockierende Netz-Mount, nicht die App-Logik. Fix: remount als Hintergrund-Task (asyncio.create_task) statt await -> die API kommt sofort hoch, die Mounts stellen sich her sobald der Server antwortet. Test (test_api_smoke.py): haelt den Nicht-blockierend-Vertrag per Quelltext- Inspektion fest, im Stil der anderen Verdrahtungs-Tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-2
@@ -47,11 +47,16 @@ async def startup_event():
|
||||
except ConfigValidationError as e:
|
||||
print(f"⚠️ Konfigurations-Warnung: {e}")
|
||||
|
||||
# Gespeicherte Netzwerk-Speicherziele wiederherstellen
|
||||
# Gespeicherte Netzwerk-Speicherziele wiederherstellen — NICHT-BLOCKIEREND.
|
||||
# Ein zickiger/langsamer Netz-Mount (der CIFS-Schreibtest in mounten() kann im
|
||||
# Kernel haengen, wait_for_response) darf den API-Start NIE blockieren. Vorfall
|
||||
# 24.07.: ~5 min "Waiting for application startup", kein Endpoint bedient, bis der
|
||||
# soft-Mount per Timeout abbrach. Darum im Hintergrund: die Mounts stellen sich
|
||||
# her, sobald der Server antwortet, ohne die API auszubremsen.
|
||||
def remount():
|
||||
for meldung in mount_verwaltung.alle_remounten():
|
||||
db.add_log("info", "mounts", meldung)
|
||||
await asyncio.to_thread(remount)
|
||||
asyncio.create_task(asyncio.to_thread(remount))
|
||||
|
||||
asyncio.create_task(disc_watcher())
|
||||
# MakeMKV-Beta-Key automatisch aktuell halten (wechselt ~monatlich, laeuft zum
|
||||
|
||||
Reference in New Issue
Block a user