@@ -115,21 +115,23 @@ async def run(self) -> None:
115115 logger .info ("No SEDA feeds needed" )
116116 return
117117
118- await asyncio .gather (
119- * [
120- self ._run_single (feed_name , self .feeds [feed_name ])
121- for feed_name in self .feeds
122- ]
123- )
118+ async with httpx .AsyncClient (timeout = self .poll_timeout ) as client :
119+ await asyncio .gather (
120+ * [
121+ self ._run_single (client , feed_name , self .feeds [feed_name ])
122+ for feed_name in self .feeds
123+ ]
124+ )
124125
125- async def _run_single (self , feed_name : str , feed_config : SedaFeedConfig ) -> None :
126+ async def _run_single (
127+ self , client : httpx .AsyncClient , feed_name : str , feed_config : SedaFeedConfig
128+ ) -> None :
126129 """Run continuous polling loop for a single feed."""
127- async with httpx .AsyncClient (timeout = self .poll_timeout ) as client :
128- while True :
129- result = await self .poll_single_feed (client , feed_name , feed_config )
130- await asyncio .sleep (
131- self .poll_interval if result ["ok" ] else self .poll_failure_interval
132- )
130+ while True :
131+ result = await self .poll_single_feed (client , feed_name , feed_config )
132+ await asyncio .sleep (
133+ self .poll_interval if result ["ok" ] else self .poll_failure_interval
134+ )
133135
134136 async def poll_single_feed (
135137 self ,
@@ -172,6 +174,7 @@ async def _poll(
172174 data : dict [str , Any ],
173175 ) -> PollResult :
174176 """Execute HTTP POST request to SEDA API."""
177+ resp : httpx .Response | None = None
175178 try :
176179 resp = await client .post (
177180 self .url , headers = headers , params = params , json = data
@@ -182,6 +185,9 @@ async def _poll(
182185 return {"ok" : False , "status" : e .response .status_code , "error" : repr (e )}
183186 except Exception as e :
184187 return {"ok" : False , "status" : None , "error" : repr (e )}
188+ finally :
189+ if resp is not None :
190+ await resp .aclose ()
185191
186192 def _parse_seda_message (self , feed_name : str , message : dict [str , Any ]) -> None :
187193 """Parse SEDA response and store prices in state."""
0 commit comments