j commited on
Commit
6cd6178
·
1 Parent(s): 5a4097e

added retry for 500 errors in get_job_status

Browse files
reascripts/ReaSpeech/source/ReaSpeechWorker.lua CHANGED
@@ -113,11 +113,28 @@ function ReaSpeechWorker:cancel_job(job_id)
113
  end)
114
  end
115
 
116
- function ReaSpeechWorker:get_job_status(job_id)
 
 
 
 
117
  local url_path = "jobs/" .. job_id
118
- return ReaSpeechAPI:fetch_json(url_path, 'GET', function(error_message)
119
- self:handle_error(self.active_job, error_message)
120
- self.active_job = nil
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  end)
122
  end
123
 
 
113
  end)
114
  end
115
 
116
+ function ReaSpeechWorker:get_job_status(job_id, retry_count)
117
+ retry_count = retry_count or 0
118
+ local max_retries = 5
119
+ local retry_delay = 1 * (2 ^ retry_count) -- Exponential backoff
120
+
121
  local url_path = "jobs/" .. job_id
122
+
123
+ ReaSpeechAPI:fetch_json(url_path, 'GET', function(error_message)
124
+ if error_message:match("500") and retry_count < max_retries then
125
+ app:debug("Got 500 error, retrying in " .. retry_delay .. " seconds. Retry " .. (retry_count + 1) .. " of " .. max_retries)
126
+ reaper.defer(function()
127
+ self:get_job_status(job_id, retry_count + 1)
128
+ end)
129
+ else
130
+ self:handle_error(self.active_job, error_message)
131
+ self.active_job = nil
132
+ end
133
+ end, function(response)
134
+
135
+ if self:handle_job_status(self.active_job, response) then
136
+ self.active_job = nil
137
+ end
138
  end)
139
  end
140