|
1 |
| -from threading import Thread |
2 |
| -from time import sleep |
3 | 1 | from tableauserverclient import datetime_helpers as datetime
|
4 | 2 |
|
5 | 3 | from packaging.version import Version
|
@@ -76,55 +74,20 @@ def set_user_agent(parameters):
|
76 | 74 | return parameters
|
77 | 75 |
|
78 | 76 | def _blocking_request(self, method, url, parameters={}) -> Optional[Union["Response", Exception]]:
|
79 |
| - self.async_response = None |
80 | 77 | response = None
|
81 | 78 | logger.debug("[{}] Begin blocking request to {}".format(datetime.timestamp(), url))
|
82 | 79 | try:
|
83 | 80 | response = method(url, **parameters)
|
84 |
| - self.async_response = response |
85 | 81 | logger.debug("[{}] Call finished".format(datetime.timestamp()))
|
86 | 82 | except Exception as e:
|
87 | 83 | logger.debug("Error making request to server: {}".format(e))
|
88 |
| - self.async_response = e |
89 |
| - finally: |
90 |
| - if response and not self.async_response: |
91 |
| - logger.debug("Request response not saved") |
92 |
| - return None |
93 |
| - logger.debug("[{}] Request complete".format(datetime.timestamp())) |
94 |
| - return self.async_response |
| 84 | + raise e |
| 85 | + return response |
95 | 86 |
|
96 | 87 | def send_request_while_show_progress_threaded(
|
97 | 88 | self, method, url, parameters={}, request_timeout=None
|
98 | 89 | ) -> Optional[Union["Response", Exception]]:
|
99 |
| - try: |
100 |
| - request_thread = Thread(target=self._blocking_request, args=(method, url, parameters)) |
101 |
| - request_thread.start() |
102 |
| - except Exception as e: |
103 |
| - logger.debug("Error starting server request on separate thread: {}".format(e)) |
104 |
| - return None |
105 |
| - seconds = 0.05 |
106 |
| - minutes = 0 |
107 |
| - last_log_minute = 0 |
108 |
| - sleep(seconds) |
109 |
| - if self.async_response is not None: |
110 |
| - # a quick return for any immediate responses |
111 |
| - return self.async_response |
112 |
| - timed_out: bool = request_timeout is not None and seconds > request_timeout |
113 |
| - while (self.async_response is None) and not timed_out: |
114 |
| - sleep(DELAY_SLEEP_SECONDS) |
115 |
| - seconds = seconds + DELAY_SLEEP_SECONDS |
116 |
| - minutes = int(seconds / 60) |
117 |
| - last_log_minute = self.log_wait_time(minutes, last_log_minute, url) |
118 |
| - return self.async_response |
119 |
| - |
120 |
| - def log_wait_time(self, minutes, last_log_minute, url) -> int: |
121 |
| - logger.debug("{} Waiting....".format(datetime.timestamp())) |
122 |
| - if minutes > last_log_minute: # detailed log message ~every minute |
123 |
| - logger.info("[{}] Waiting ({} minutes so far) for request to {}".format(datetime.timestamp(), minutes, url)) |
124 |
| - last_log_minute = minutes |
125 |
| - else: |
126 |
| - logger.debug("[{}] Waiting for request to {}".format(datetime.timestamp(), url)) |
127 |
| - return last_log_minute |
| 90 | + return self._blocking_request(method, url, parameters) |
128 | 91 |
|
129 | 92 | def _make_request(
|
130 | 93 | self,
|
|
0 commit comments