-
fix: A21 phase 2b — run_event_sync + 15 routes api_v2 en def (v7.10.0)
released this
2026-10-01 11:35:43 -04:00 | 110 commits to main since this releaserun_event_sync(coro)(app/services/automations.py) : exécute une coroutine
d'événement depuis un handler synchrone —asyncio.runsur une boucle
dédiée dans le worker threadpool : le worker est bloqué, JAMAIS la boucle
d'event, et la réponse n'est produite qu'une fois l'événement terminé
(déterministe, équivalent sémantique de l'await). ponytail: les clients
httpx sont créés à chaque appel partout → aucun lien de boucle ; sinon
run_coroutine_threadsafe + boucle du lifespan.-
- 15 routes api_v2 dont les SEULS awaits étaient
request.json, _fire_event,fire_published,fire_unpublished→Body(default={})+run_event_sync(...)+ conversion endef(script- wrapping par appariement de parenthèses chaîne-aware, assert de flip
« plus aucun await »).
- 15 routes api_v2 dont les SEULS awaits étaient
- api_v2 : 111/115 routes hors loop. Les 4 restantes ont de vrais awaits
réseau et restent async volontairement : import_csv_v2 (multipart),
project_tree_v2 (gitea), test_webhook_v2 (delivery), retry_webhook_deliveries. - Repo-wide : 403 routes sync (hors loop) / 260 async (phase 2c).
tests : ciblé public_api_v2 + v65 + webhooks_v2 + audit = 90/90 (les webhooks
prouvent la détermination de run_event_sync) ; suite complète 1037/1037
(228 s) ·ruff check app testsOK · docs à jourDownloads