|
10 | 10 |
|
11 | 11 | from tableauserverclient.server.endpoint.dqw_endpoint import _DataQualityWarningEndpoint |
12 | 12 | from tableauserverclient.server.endpoint.endpoint import QuerysetEndpoint, api |
13 | | -from tableauserverclient.server.endpoint.exceptions import InternalServerError, MissingRequiredFieldError |
| 13 | +from tableauserverclient.server.endpoint.exceptions import ( |
| 14 | + DUPLICATE_EXTRACT_JOB_CODE, |
| 15 | + InternalServerError, |
| 16 | + MissingRequiredFieldError, |
| 17 | + ServerResponseError, |
| 18 | +) |
14 | 19 | from tableauserverclient.server.endpoint.permissions_endpoint import _PermissionsEndpoint |
15 | 20 | from tableauserverclient.server.endpoint.resource_tagger import _ResourceTagger, TaggingMixin |
16 | 21 | from tableauserverclient.models import FlowItem, PaginationItem, ConnectionItem, JobItem |
@@ -324,7 +329,13 @@ def refresh(self, flow_item: FlowItem | str) -> JobItem: |
324 | 329 | flow_id = getattr(flow_item, "id", flow_item) |
325 | 330 | url = f"{self.baseurl}/{flow_id}/run" |
326 | 331 | empty_req = RequestFactory.Empty.empty_req() |
327 | | - server_response = self.post_request(url, empty_req) |
| 332 | + try: |
| 333 | + server_response = self.post_request(url, empty_req) |
| 334 | + except ServerResponseError as e: |
| 335 | + if e.code == DUPLICATE_EXTRACT_JOB_CODE: |
| 336 | + logger.warning(f"{e.summary} {e.detail}") |
| 337 | + return None |
| 338 | + raise |
328 | 339 | new_job = JobItem.from_response(server_response.content, self.parent_srv.namespace)[0] |
329 | 340 | return new_job |
330 | 341 |
|
|
0 commit comments