Skip to content

Commit ab6a11f

Browse files
committed
Close opa client session
1 parent b25a9aa commit ab6a11f

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/blueapi/service/authorization.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ def __init__(self, instrument: str, config: OpaConfig):
2828
def for_token(self, token: str) -> "OpaUserClient":
2929
return OpaUserClient(self, token)
3030

31+
async def close(self):
32+
await self._session.close()
33+
3134
async def _call_opa(self, endpoint, data: Mapping[str, Any]) -> bool:
3235
try:
3336
resp = await self._session.post(

src/blueapi/service/main.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,17 @@ async def inner(app: FastAPI):
9898
if not config.env.metadata:
9999
raise ValueError("Instrument name is required in metadata")
100100
setup_runner(config)
101-
if config.env.metadata and config.opa:
102-
app.state.authz = OpaClient(config.env.metadata.instrument, config.opa)
103-
if isinstance(config.tiled.authentication, ServiceAccount) and config.oidc:
104-
await validate_tiled_config(
105-
config.tiled.authentication, config.oidc, app.state.authz
106-
)
107-
yield
101+
try:
102+
if config.env.metadata and config.opa:
103+
app.state.authz = OpaClient(config.env.metadata.instrument, config.opa)
104+
if isinstance(config.tiled.authentication, ServiceAccount) and config.oidc:
105+
await validate_tiled_config(
106+
config.tiled.authentication, config.oidc, app.state.authz
107+
)
108+
yield
109+
finally:
110+
if app.state.authz:
111+
await app.state.authz.close()
108112
teardown_runner()
109113

110114
return inner

0 commit comments

Comments
 (0)