fix(async): convert PoA proposer methods to async and update coordinator dependencies

- Convert _propose_block, _ensure_genesis_block to async methods in PoAProposer
- Add await to gossip_broker.publish calls in block broadcasting
- Add await to _ensure_genesis_block and _propose_block method calls
- Update coordinator-api Python version constraint to >=3.13,<3.15
- Add torch ^2.10.0 dependency to coordinator-api
- Add make_asgi_app import to prometheus_client in main.py
- Export new routers: global
This commit is contained in:
oib
2026-03-03 15:32:05 +01:00
parent cabbd2d9b7
commit 14d0ed3b44
16 changed files with 829 additions and 15 deletions

View File

@@ -81,7 +81,7 @@ class PoAProposer:
if self._task is not None:
return
self._logger.info("Starting PoA proposer loop", extra={"interval": self._config.interval_seconds})
self._ensure_genesis_block()
await self._ensure_genesis_block()
self._stop_event.clear()
self._task = asyncio.create_task(self._run_loop())
@@ -99,7 +99,7 @@ class PoAProposer:
if self._stop_event.is_set():
break
try:
self._propose_block()
await self._propose_block()
except Exception as exc: # pragma: no cover - defensive logging
self._logger.exception("Failed to propose block", extra={"error": str(exc)})
@@ -117,7 +117,7 @@ class PoAProposer:
except asyncio.TimeoutError:
return
def _propose_block(self) -> None:
async def _propose_block(self) -> None:
# Check internal mempool
from ..mempool import get_mempool
if get_mempool().size(self._config.chain_id) == 0:
@@ -171,7 +171,7 @@ class PoAProposer:
)
# Broadcast the new block
gossip_broker.publish(
await gossip_broker.publish(
"blocks",
{
"height": block.height,
@@ -184,7 +184,7 @@ class PoAProposer:
}
)
def _ensure_genesis_block(self) -> None:
async def _ensure_genesis_block(self) -> None:
with self._session_factory() as session:
head = session.exec(select(Block).where(Block.chain_id == self._config.chain_id).order_by(Block.height.desc()).limit(1)).first()
if head is not None:
@@ -207,7 +207,7 @@ class PoAProposer:
session.commit()
# Broadcast genesis block for initial sync
gossip_broker.publish(
await gossip_broker.publish(
"blocks",
{
"height": genesis.height,