def test_get_sleep_duration_negative_try(): from dask_cloudprovider.providers.aws.helper import get_sleep_duration duration = get_sleep_duration(current_try=-1, min_sleep_millis=10, max_sleep_millis=5000) assert duration == 0.01
async def logs(self, follow=False): current_try = 0 next_token = None read_from = 0 while True: try: async with self._client("logs") as logs: if next_token: l = await logs.get_log_events( logGroupName=self.log_group, logStreamName=self._log_stream_name, nextToken=next_token, ) else: l = await logs.get_log_events( logGroupName=self.log_group, logStreamName=self._log_stream_name, startTime=read_from, ) if next_token != l["nextForwardToken"]: next_token = l["nextForwardToken"] else: next_token = None if not l["events"]: if follow: await asyncio.sleep(1) else: break for event in l["events"]: read_from = event["timestamp"] yield event["message"] except ClientError as e: if e.response["Error"]["Code"] == "ThrottlingException": warnings.warn( "get_log_events rate limit exceeded, retrying after delay.", RuntimeWarning, ) backoff_duration = get_sleep_duration(current_try) await asyncio.sleep(backoff_duration) current_try += 1 else: raise