def run1(self, payload):
data = None
browser = None
begin_time = datetime.datetime.now()
retry = payload.get('retried', False)
try:
socket_timeout = payload.get('sockettimeout') or self._socket_timeout
browser = websocket.create_connection(self._browser_url, timeout=socket_timeout)
data = self.run1_core(payload, browser, begin_time)
return data
except websocket.WebSocketTimeoutException as e:
if retry:
error_data = {
'state': 'critical',
'error_code': -6,
'error_desc': str(type(e)) + ': ' + str(e)
}
ret = self.crawl_info(error_data, payload, begin_time)
return ret
else:
sleep(payload.get('retry_sleep', 3))
payload['sockettimeout'] = int(payload.get('sockettimeout') or self._socket_timeout) + payload.get(
'retry_extra', 10)
payload['loadtimeout'] = int(payload.get('loadtimeout') or self._socket_timeout) + payload.get('retry_extra',
10)
payload['retried'] = True
return self.run1_core(payload, browser=browser, begin_time=begin_time)
except Exception as e:
error_data = {
'state': 'critical',
'error_code': -7,
'error_desc': str(type(e)) + ': ' + str(e)
}
ret = self.crawl_info(error_data, payload, begin_time)
return ret
finally:
if browser is not None:
browser.close()
评论列表
文章目录