MCPcopy Index your code
hub / github.com/eternnoir/pyTelegramBotAPI / _process_request

Function _process_request

telebot/asyncio_helper.py:69–114  ·  view source on GitHub ↗
(token, url, method='get', params=None, files=None, **kwargs)

Source from the content-addressed store, hash-verified

67session_manager = SessionManager()
68
69async 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
116def _prepare_file(obj):
117 """

Callers 15

get_meFunction · 0.85
log_outFunction · 0.85
closeFunction · 0.85
get_fileFunction · 0.85
set_webhookFunction · 0.85
delete_webhookFunction · 0.85
get_webhook_infoFunction · 0.85
get_updatesFunction · 0.85
send_messageFunction · 0.85
get_user_profile_photosFunction · 0.85
get_user_profile_audiosFunction · 0.85
set_user_emoji_statusFunction · 0.85

Calls 4

_prepare_dataFunction · 0.85
RequestTimeoutClass · 0.85
get_sessionMethod · 0.80
_check_resultFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…