Skip to content

Commit 246b449

Browse files
committed
issue-1299 set empty async response to None
1 parent 3ec49bc commit 246b449

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

tableauserverclient/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# For when a datasource is over 64MB, break it into 5MB(standard chunk size) chunks
88
CHUNK_SIZE_MB = 5 * 10 # 5MB felt too slow, upped it to 50
99

10-
DELAY_SLEEP_SECONDS = 10
10+
DELAY_SLEEP_SECONDS = 0.1
1111

1212
# The maximum size of a file that can be published in a single request is 64MB
1313
FILESIZE_LIMIT_MB = 64

tableauserverclient/server/endpoint/endpoint.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def set_user_agent(parameters):
7676
# return explicitly for testing only
7777
return parameters
7878

79-
def _blocking_request(self, method, url, parameters={}) -> Optional["Response"]:
79+
def _blocking_request(self, method, url, parameters={}) -> Optional[Union["Response", Exception]]:
8080
self.async_response = None
8181
response = None
8282
logger.debug("[{}] Begin blocking request to {}".format(datetime.timestamp(), url))
@@ -96,32 +96,31 @@ def _blocking_request(self, method, url, parameters={}) -> Optional["Response"]:
9696

9797
def send_request_while_show_progress_threaded(
9898
self, method, url, parameters={}, request_timeout=0
99-
) -> Optional["Response"]:
99+
) -> Optional[Union["Response", Exception]]:
100100
try:
101101
request_thread = Thread(target=self._blocking_request, args=(method, url, parameters))
102-
request_thread.async_response = -1 # type:ignore # this is an invented attribute for thread comms
103102
request_thread.start()
104103
except Exception as e:
105104
logger.debug("Error starting server request on separate thread: {}".format(e))
106105
return None
107-
seconds = 0
106+
seconds = 0.05
108107
minutes = 0
109-
sleep(1)
110-
if self.async_response != -1:
108+
sleep(seconds)
109+
if self.async_response is not None:
111110
# a quick return for any immediate responses
112111
return self.async_response
113-
while self.async_response == -1 and (request_timeout == 0 or seconds < request_timeout):
112+
while (self.async_response is None) and (request_timeout == 0 or seconds < request_timeout):
114113
self.log_wait_time_then_sleep(minutes, seconds, url)
115114
seconds = seconds + DELAY_SLEEP_SECONDS
116115
if seconds >= 60:
117-
seconds = 0
118-
minutes = minutes + 1
116+
seconds -= 60
117+
minutes += 1
119118
return self.async_response
120119

121120
def log_wait_time_then_sleep(self, minutes, seconds, url):
122121
logger.debug("{} Waiting....".format(datetime.timestamp()))
123122
if seconds >= 60: # detailed log message ~every minute
124-
if minutes % 5 == 0:
123+
if minutes % 1 == 0:
125124
logger.info(
126125
"[{}] Waiting ({} minutes so far) for request to {}".format(datetime.timestamp(), minutes, url)
127126
)

0 commit comments

Comments
 (0)