(token, url, method='get', params=None, files=None, **kwargs)
| 67 | session_manager = SessionManager() |
| 68 | |
| 69 | async def _process_request(token, url, method='get', params=None, files=None, **kwargs): |
| 70 | # Let's resolve all timeout parameters. |
| 71 | # getUpdates parameter may contain 2 parameters: request_timeout & timeout. |
| 72 | # other methods may contain timeout parameter that should be applied to |
| 73 | # ClientTimeout only. |
| 74 | # timeout should be added to params for getUpdates. All other timeout's should be used |
| 75 | # for request timeout. |
| 76 | # here we got request_timeout, so this is getUpdates method. |
| 77 | if 'request_timeout' in kwargs: |
| 78 | request_timeout = kwargs.pop('request_timeout') |
| 79 | |
| 80 | else: |
| 81 | # let's check for timeout in params |
| 82 | request_timeout = params.pop('timeout', None) if params else None |
| 83 | # we will apply default request_timeout if there is no timeout in params |
| 84 | # otherwise, we will use timeout parameter applied for payload. |
| 85 | |
| 86 | request_timeout = REQUEST_TIMEOUT if request_timeout is None else request_timeout |
| 87 | |
| 88 | |
| 89 | # Preparing data by adding all parameters and files to FormData |
| 90 | params = _prepare_data(params, files) |
| 91 | |
| 92 | timeout = aiohttp.ClientTimeout(total=request_timeout) |
| 93 | got_result = False |
| 94 | current_try=0 |
| 95 | session = await session_manager.get_session() |
| 96 | while not got_result and current_try<MAX_RETRIES-1: |
| 97 | current_try +=1 |
| 98 | try: |
| 99 | async with session.request(method=method, url=API_URL.format(token, url), data=params, timeout=timeout, proxy=proxy) as resp: |
| 100 | got_result = True |
| 101 | logger.debug("Request: method={0} url={1} params={2} files={3} request_timeout={4} current_try={5}".format(method, url, params, files, request_timeout, current_try).replace(token, token.split(':')[0] + ":{TOKEN}")) |
| 102 | |
| 103 | json_result = await _check_result(url, resp) |
| 104 | if json_result: |
| 105 | return json_result['result'] |
| 106 | except (ApiTelegramException,ApiInvalidJSONException, ApiHTTPException) as e: |
| 107 | raise e |
| 108 | except aiohttp.ClientError as e: |
| 109 | logger.error('Aiohttp ClientError: {0}'.format(e.__class__.__name__)) |
| 110 | except Exception as e: |
| 111 | logger.error(f'Unknown error: {e.__class__.__name__}') |
| 112 | if not got_result: |
| 113 | raise RequestTimeout("Request timeout. Request: method={0} url={1} params={2} files={3} request_timeout={4}".format(method, url, params, files, request_timeout, current_try)) |
| 114 | return None |
| 115 | |
| 116 | def _prepare_file(obj): |
| 117 | """ |
no test coverage detected
searching dependent graphs…