Skip to content

Commit

Permalink
Ping workbench with background task only
Browse files Browse the repository at this point in the history
To allow ctrl+c during startup
  • Loading branch information
markwaddle committed Nov 20, 2024
1 parent 6f5c188 commit 4dcf4db
Showing 1 changed file with 6 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,26 +74,14 @@ def __init__(

@asynccontextmanager
async def lifespan() -> AsyncIterator[None]:
# connect to workbench on startup
logger.info(
"connecting to semantic-workbench-service on startup; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
"connecting to semantic-workbench-service; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
settings.workbench_service_url,
self.service_id,
settings.callback_url,
)

async with self.workbench_client.for_service() as service_client:
try:
await self._ping_semantic_workbench(service_client)
logger.info(
"connected to semantic-workbench-service on startup; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
settings.workbench_service_url,
self.service_id,
settings.callback_url,
)
except httpx.HTTPError:
logger.warning("failed to connect workbench on startup", exc_info=True)

# start periodic pings to workbench
ping_task = asyncio.create_task(
self._periodically_ping_semantic_workbench(service_client), name="ping-workbench"
Expand All @@ -116,16 +104,16 @@ async def _periodically_ping_semantic_workbench(
) -> NoReturn:
while True:
try:
jitter = random.uniform(0, settings.workbench_service_ping_interval_seconds / 2.0)
await asyncio.sleep(settings.workbench_service_ping_interval_seconds + jitter)

try:
await self._ping_semantic_workbench(client)
except httpx.HTTPError:
logger.error("ping to workbench failed", exc_info=True)
logger.exception("ping to workbench failed")

jitter = random.uniform(0, settings.workbench_service_ping_interval_seconds / 2.0)
await asyncio.sleep(settings.workbench_service_ping_interval_seconds + jitter)

except Exception:
logger.exception("unexpected error in ping loop", exc_info=True)
logger.exception("unexpected error in ping loop")

@backoff.on_exception(
backoff.expo,
Expand Down

0 comments on commit 4dcf4db

Please sign in to comment.