def blocking_thread(): bl_thread_ctx = SockCkBlockingThreadCtx() bl_thread_ctx.error_type = None bl_thread_ctx.error_str = None try: opener = url_request.build_opener() bl_thread_ctx.begin_time = datetime.datetime.utcnow() with socks_proxy_context.socks_proxy_context( proxy_address=(source_host, source_port), proxy_timeout=thread_ctx.req_timeout, ): res = opener.open(thread_ctx.check_url, timeout=thread_ctx.req_timeout) data = res.read(thread_ctx.req_length).decode(errors='replace') bl_thread_ctx.done_time = datetime.datetime.utcnow() if thread_ctx.check_answer not in data: raise CheckAnswerError('check_answer not in data') except Exception as e: bl_thread_ctx.error_time = datetime.datetime.utcnow() bl_thread_ctx.error_type = type(e) bl_thread_ctx.error_str = str(e) loop.call_soon_threadsafe(result_queue.put_nowait, bl_thread_ctx)
def ext_open(opener, *args, headers=None, new_headers=None, proxy_kwargs=None, error_retry_list=None, error_retry_count=None, error_retry_delay=None, error_retry_delay_multiplier=None, **kwargs): if headers is not None: spec_headers = headers else: spec_headers = opener.addheaders if new_headers is not None: spec_headers = list(spec_headers) spec_headers += new_headers if error_retry_list is None: error_retry_list = DEFAULT_ERROR_RETRY_LIST if error_retry_count is None: error_retry_count = DEFAULT_ERROR_RETRY_COUNT if error_retry_delay is None: error_retry_delay = DEFAULT_ERROR_RETRY_DELAY if error_retry_delay_multiplier is None: error_retry_delay_multiplier = DEFAULT_ERROR_RETRY_DELAY_MULTIPLIER orig_headers = opener.addheaders opener.addheaders = spec_headers try: while True: try: if proxy_kwargs is not None: with socks_proxy_context.socks_proxy_context( **proxy_kwargs): return opener.open(*args, **kwargs) else: return opener.open(*args, **kwargs) except error_retry_list: if error_retry_count <= 0: raise error_retry_count -= 1 time.sleep(error_retry_delay) error_retry_delay *= error_retry_delay_multiplier continue finally: opener.addheaders = orig_headers
def ext_open(opener, *args, headers=None, new_headers=None, proxy_kwargs=None, error_retry_list=None, error_retry_count=None, error_retry_delay=None, error_retry_delay_multiplier=None, **kwargs): if headers is not None: spec_headers = headers else: spec_headers = opener.addheaders if new_headers is not None: spec_headers = list(spec_headers) spec_headers += new_headers if error_retry_list is None: error_retry_list = DEFAULT_ERROR_RETRY_LIST if error_retry_count is None: error_retry_count = DEFAULT_ERROR_RETRY_COUNT if error_retry_delay is None: error_retry_delay = DEFAULT_ERROR_RETRY_DELAY if error_retry_delay_multiplier is None: error_retry_delay_multiplier = DEFAULT_ERROR_RETRY_DELAY_MULTIPLIER orig_headers = opener.addheaders opener.addheaders = spec_headers try: while True: try: if proxy_kwargs is not None: with socks_proxy_context.socks_proxy_context(**proxy_kwargs): return opener.open(*args, **kwargs) else: return opener.open(*args, **kwargs) except error_retry_list: if error_retry_count <= 0: raise error_retry_count -= 1 time.sleep(error_retry_delay) error_retry_delay *= error_retry_delay_multiplier continue finally: opener.addheaders = orig_headers
def accessMatchHistory(lastseqnum): succeed = False while not succeed: try: with socks_proxy_context.socks_proxy_context(proxy_address=('127.0.0.1', 1080)): res = opener.open("https://api.steampowered.com/IDOTA2Match_570/GetMatchHistoryBySequenceNum/V001/?key=" + apikey + "&start_at_match_seq_num=" + str(lastseqnum)) matchHist = json.loads(res.read().decode('utf-8')) succeed = True # matchHist = json.loads(urllib.request.urlopen("https://api.steampowered.com/IDOTA2Match_570/GetMatchHistoryBySequenceNum/V001/?key=" + apikey + "&start_at_match_seq_num=" + str(lastseqnum)).read().decode("utf-8")) # succeed = True except urllib.error.HTTPError: print("WOAH") time.sleep(30) except: print("Some other error has occured") time.sleep(30) return matchHist
def open_func(opener, *args, **kwargs): with socks_proxy_context.socks_proxy_context(proxy_address=proxy_address): return opener.open(*args, **kwargs)
def open_func(opener, *args, **kwargs): with socks_proxy_context.socks_proxy_context( proxy_address=proxy_address): return opener.open(*args, **kwargs)