Skip to content

Commit 0040353

Browse files
authored
Ping workbench with background task only (#258)
To allow ctrl+c during startup
1 parent 6f5c188 commit 0040353

1 file changed

Lines changed: 6 additions & 18 deletions

File tree

libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/assistant_service.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,14 @@ def __init__(
7474

7575
@asynccontextmanager
7676
async def lifespan() -> AsyncIterator[None]:
77-
# connect to workbench on startup
7877
logger.info(
79-
"connecting to semantic-workbench-service on startup; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
78+
"connecting to semantic-workbench-service; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
8079
settings.workbench_service_url,
8180
self.service_id,
8281
settings.callback_url,
8382
)
8483

8584
async with self.workbench_client.for_service() as service_client:
86-
try:
87-
await self._ping_semantic_workbench(service_client)
88-
logger.info(
89-
"connected to semantic-workbench-service on startup; workbench_service_url: %s, assistant_service_id: %s, callback_url: %s",
90-
settings.workbench_service_url,
91-
self.service_id,
92-
settings.callback_url,
93-
)
94-
except httpx.HTTPError:
95-
logger.warning("failed to connect workbench on startup", exc_info=True)
96-
9785
# start periodic pings to workbench
9886
ping_task = asyncio.create_task(
9987
self._periodically_ping_semantic_workbench(service_client), name="ping-workbench"
@@ -116,16 +104,16 @@ async def _periodically_ping_semantic_workbench(
116104
) -> NoReturn:
117105
while True:
118106
try:
119-
jitter = random.uniform(0, settings.workbench_service_ping_interval_seconds / 2.0)
120-
await asyncio.sleep(settings.workbench_service_ping_interval_seconds + jitter)
121-
122107
try:
123108
await self._ping_semantic_workbench(client)
124109
except httpx.HTTPError:
125-
logger.error("ping to workbench failed", exc_info=True)
110+
logger.exception("ping to workbench failed")
111+
112+
jitter = random.uniform(0, settings.workbench_service_ping_interval_seconds / 2.0)
113+
await asyncio.sleep(settings.workbench_service_ping_interval_seconds + jitter)
126114

127115
except Exception:
128-
logger.exception("unexpected error in ping loop", exc_info=True)
116+
logger.exception("unexpected error in ping loop")
129117

130118
@backoff.on_exception(
131119
backoff.expo,

0 commit comments

Comments
 (0)