@@ -10,6 +10,7 @@ class Task(object):
1010 def __init__ (self , access_token , connect , debug = False , ** kwargs ):
1111 self .connect = connect
1212 self .status_url = None
13+ self .main_status_url = '{0}/{1}/status' .format (self .connect .url , self .connect .version )
1314 self .task_token = None
1415 self .upload_url = None
1516 self .access_token = access_token
@@ -166,33 +167,43 @@ def _create_task(self, count):
166167
167168 def _start_encode (self , api_name , data ):
168169 res = self .connect .request (api_name , data )
169- if not res ['error' ]:
170- self .status_url = res . get ( 'status_url' )
170+ if not res ['error' ] and res . get ( 'status_url' ) :
171+ self .status_url = res [ 'status_url' ]
171172 else :
172- self .status_url = '{0}/{1}/status' . format ( self .connect . url , self . connect . version )
173- self .error = res [ 'error' ]
173+ self .status_url = self .main_status_url
174+ self .error = res . get ( 'error' )
174175 self .message = res .get ('message' )
175176
176177 def _status (self ):
177178 response = self .connect .post (self .status_url , dict (task_tokens = self .task_token ))
178- if not response ['error' ]:
179+ status = None
180+
181+ if response ['error' ] == ERROR_BAD_TOKENS :
182+ raise ValueError ('Bad token: ' + str (self .task_token ))
183+
184+ if 'statuses' in response and self .task_token in response ['statuses' ]:
185+ status = response ['statuses' ][self .task_token ]
186+
187+ if not status and self .status_url != self .main_status_url :
188+ self .status_url = self .main_status_url
189+ response = self .connect .post (self .status_url , dict (task_tokens = self .task_token ))
190+ if 'statuses' in response and self .task_token in response ['statuses' ]:
179191 status = response ['statuses' ][self .task_token ]
180- if not status :
181- status = self ._status2 ()
182- return status
183- else :
184- status = self ._status2 ()
185- return status
186192
193+ if status and 'status_url' in status :
194+ self .status_url = status ['status_url' ]
187195
188- def _status2 (self ):
189- response = self .connect .request ('status' , {'task_tokens[]' : self .task_token })
190- if not response ['error' ]:
191- res = response ['statuses' ][self .task_token ]
192- if res :
193- return res
194- else :
195- return dict (error = True , message = 'Error getting status' )
196- else :
197- return response
196+ return status
197+
198+
199+ # def _status2(self):
200+ # response = self.connect.request('status', {'task_tokens[]': self.task_token})
201+ # if not response['error']:
202+ # res = response['statuses'][self.task_token]
203+ # if res:
204+ # return res
205+ # else:
206+ # return dict(error=True, message='Error getting status')
207+ # else:
208+ # return response
198209
0 commit comments