Skip to content

Commit d1dbe75

Browse files
committed
simplify flow
1 parent e6cc844 commit d1dbe75

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

clickhouse_mysql/writer/tbcsvwriter.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,14 @@ def __init__(
5757

5858

5959
def uploadCSV(self, table, filename, tries=1):
60+
limit_of_retries = 9
6061
self.not_uploaded = False
6162
params = {
6263
'name': table,
6364
'mode': 'append',
6465
'dialect_delimiter': ','
6566
}
6667

67-
limit_of_retries = 10
68-
retry_after = 0
69-
7068
try:
7169
with open(filename, 'rb') as f:
7270
m = MultipartEncoder(fields={'csv': ('csv', f, 'text/csv')})
@@ -92,15 +90,20 @@ def uploadCSV(self, table, filename, tries=1):
9290
# retry with the recommended value
9391
retry_after = int(response.headers['Retry-After']) + tries
9492
logging.error(f"Too many requests retrying in {retry_after} seconds to upload {filename} to {table}")
93+
time.sleep(retry_after)
94+
self.uploadCSV(table, filename, tries + 1)
9595
elif response.status_code >= 500:
9696
# In case of server error let's retry `limit_of_retries` times, but exponentially
9797
logging.error(response.content)
9898
if tries > limit_of_retries:
99+
logging.debug(f'Limit of retries reached for {filename}')
99100
self.not_uploaded = True
100101
return
101102

102103
retry_after = 2 ** tries
103104
logging.info(f"Retrying {filename} when status {response.status_code}, waiting {retry_after}, try {tries} of {limit_of_retries}")
105+
time.sleep(retry_after)
106+
self.uploadCSV(table, filename, tries + 1)
104107
else:
105108
# In case of other client errors (400, 404, etc...) don't retry
106109
logging.error(response.content)
@@ -112,15 +115,16 @@ def uploadCSV(self, table, filename, tries=1):
112115
# As we don't know what went wrong... let's retry `limit_of_retries` times, but exponentially
113116
logging.exception(e)
114117
if tries > limit_of_retries:
118+
logging.debug(f'Limit of retries reached for {filename}')
115119
self.not_uploaded = True
116120
return
117121

118122
retry_after = 2 ** tries
119123
logging.info(f"Retrying {filename} when exception, waiting {retry_after} try {tries} of {limit_of_retries}")
120-
finally:
121124
time.sleep(retry_after)
122125
self.uploadCSV(table, filename, tries + 1)
123126

127+
124128
def insert(self, event_or_events=None):
125129
# event_or_events = [
126130
# event: {

0 commit comments

Comments
 (0)