@@ -57,16 +57,14 @@ def __init__(
57
57
58
58
59
59
def uploadCSV (self , table , filename , tries = 1 ):
60
+ limit_of_retries = 9
60
61
self .not_uploaded = False
61
62
params = {
62
63
'name' : table ,
63
64
'mode' : 'append' ,
64
65
'dialect_delimiter' : ','
65
66
}
66
67
67
- limit_of_retries = 10
68
- retry_after = 0
69
-
70
68
try :
71
69
with open (filename , 'rb' ) as f :
72
70
m = MultipartEncoder (fields = {'csv' : ('csv' , f , 'text/csv' )})
@@ -92,15 +90,20 @@ def uploadCSV(self, table, filename, tries=1):
92
90
# retry with the recommended value
93
91
retry_after = int (response .headers ['Retry-After' ]) + tries
94
92
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 )
95
95
elif response .status_code >= 500 :
96
96
# In case of server error let's retry `limit_of_retries` times, but exponentially
97
97
logging .error (response .content )
98
98
if tries > limit_of_retries :
99
+ logging .debug (f'Limit of retries reached for { filename } ' )
99
100
self .not_uploaded = True
100
101
return
101
102
102
103
retry_after = 2 ** tries
103
104
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 )
104
107
else :
105
108
# In case of other client errors (400, 404, etc...) don't retry
106
109
logging .error (response .content )
@@ -112,15 +115,16 @@ def uploadCSV(self, table, filename, tries=1):
112
115
# As we don't know what went wrong... let's retry `limit_of_retries` times, but exponentially
113
116
logging .exception (e )
114
117
if tries > limit_of_retries :
118
+ logging .debug (f'Limit of retries reached for { filename } ' )
115
119
self .not_uploaded = True
116
120
return
117
121
118
122
retry_after = 2 ** tries
119
123
logging .info (f"Retrying { filename } when exception, waiting { retry_after } try { tries } of { limit_of_retries } " )
120
- finally :
121
124
time .sleep (retry_after )
122
125
self .uploadCSV (table , filename , tries + 1 )
123
126
127
+
124
128
def insert (self , event_or_events = None ):
125
129
# event_or_events = [
126
130
# event: {
0 commit comments