UI: опрос задач переживает обрывы сети/перезапуск api

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jze9
2026-07-14 17:43:26 +05:00
parent 31eb8c3303
commit e62e71ce7e

View File

@@ -472,12 +472,11 @@ class MainView:
def _poll_loop(self): def _poll_loop(self):
prev: dict = {} prev: dict = {}
fails = 0
try: try:
while True: while True:
try: try:
jobs = self.client.list_jobs() jobs = self.client.list_jobs()
except (ApiError, Exception):
break
self._render_jobs(jobs) self._render_jobs(jobs)
state = {j["id"]: (j["done_items"], j["status"]) for j in jobs} state = {j["id"]: (j["done_items"], j["status"]) for j in jobs}
if state != prev: if state != prev:
@@ -485,8 +484,14 @@ class MainView:
self._refresh_library() # там же page.update() self._refresh_library() # там же page.update()
else: else:
self.page.update() self.page.update()
fails = 0
if not any(j["status"] in ("queued", "running") for j in jobs): if not any(j["status"] in ("queued", "running") for j in jobs):
break break
except Exception:
# обрыв сети/перезапуск api — не глушим опрос, пробуем ещё
fails += 1
if fails >= 10:
break
time.sleep(3) time.sleep(3)
finally: finally:
self._polling = False self._polling = False