|
32 | 32 | import httpx
|
33 | 33 | from aiohttp_retry import RetryClient, ExponentialRetry
|
34 | 34 | from google.auth import jwt
|
| 35 | +from tenacity import AsyncRetrying, stop_after_attempt, wait_fixed, retry_if_not_exception_type |
35 | 36 |
|
36 | 37 | from servicex.models import TransformRequest, TransformStatus
|
37 | 38 |
|
@@ -131,13 +132,26 @@ async def submit_transform(self, transform_request: TransformRequest):
|
131 | 132 |
|
132 | 133 | async def get_transform_status(self, request_id: str) -> TransformStatus:
|
133 | 134 | headers = await self._get_authorization()
|
134 |
| - retry_options = ExponentialRetry(attempts=5, start_timeout=10) |
| 135 | + retry_options = ExponentialRetry(attempts=5, start_timeout=3) |
135 | 136 | async with RetryClient(retry_options=retry_options) as client:
|
136 |
| - async with client.get(url=f"{self.url}/servicex/transformation/{request_id}", |
137 |
| - headers=headers) as r: |
138 |
| - if r.status == 401: |
139 |
| - raise AuthorizationError(f"Not authorized to access serviceX at {self.url}") |
140 |
| - if r.status == 404: |
141 |
| - raise ValueError(f"Transform ID {request_id} not found") |
142 |
| - o = await r.json() |
143 |
| - return TransformStatus(**o) |
| 137 | + try: |
| 138 | + async for attempt in AsyncRetrying( |
| 139 | + retry=(retry_if_not_exception_type(AuthorizationError) |
| 140 | + | retry_if_not_exception_type(ValueError)), |
| 141 | + stop=stop_after_attempt(3), |
| 142 | + wait=wait_fixed(3), |
| 143 | + reraise=True): |
| 144 | + with attempt: |
| 145 | + async with client.get(url=f"{self.url}/servicex/" |
| 146 | + f"transformation/{request_id}", |
| 147 | + headers=headers) as r: |
| 148 | + if r.status == 401: |
| 149 | + raise AuthorizationError("Not authorized to access serviceX" |
| 150 | + f"at {self.url}") |
| 151 | + if r.status == 404: |
| 152 | + raise ValueError(f"Transform ID {request_id} not found") |
| 153 | + o = await r.json() |
| 154 | + return TransformStatus(**o) |
| 155 | + except RuntimeError as e: |
| 156 | + raise RuntimeError("ServiceX WebAPI Error " |
| 157 | + f"while getting transform status: {e}") |
0 commit comments