Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- async def httpreq(self, url, post_data=None, method='GET', return_data=False, headers=None, http_timeout=None,
- connector=None, time_it=None):
- if not method.upper() in self.settings.HTTP_REQUEST['METHODS']:
- raise Exception(f'Method {method} not allowed.')
- http_timeout = self.settings.HTTP_REQUEST['TIMEOUT'] if not http_timeout \
- else self.settings.HTTP_REQUEST['HTTP_TIMEOUT']
- headers = self.settings.HTTP_REQUEST['HEADERS'] if not headers else \
- self.settings.HTTP_REQUEST['HEADERS']
- if connector:
- session = aiohttp.ClientSession(headers=headers, connector=connector)
- else:
- session = aiohttp.ClientSession(headers=headers)
- response = None
- timeit_start = datetime.datetime.now() if time_it else None
- timeit_total = None
- data = None
- with session:
- with aiohttp.Timeout(http_timeout):
- try:
- if method.lower() == 'get':
- response = await session.request('get', url)
- else:
- response = await session.request('post', url, data=post_data)
- if response:
- if response.status == 200:
- if return_data:
- data = await response.read()
- await response.release()
- if timeit_start:
- timeit_total = (datetime.datetime.now() - timeit_start).total_seconds()
- else:
- await response.release()
- if timeit_start:
- temeit_total = (datetime.datetime.now() - timeit_start).total_seconds()
- raise HttpRequestError(response.reason, response.status, None,
- timeit_start=timeit_start, timeit_total=timeit_total)
- if time_it:
- return data, timeit_start, timeit_total
- else:
- return data
- except Exception as e:
- if timeit_start:
- timeit_total = (datetime.datetime.now() - timeit_start).total_seconds()
- raise HttpRequestError(None, None, e, timeit_start=timeit_start, timeit_total=timeit_total)
- finally:
- if response:
- await response.release()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement