diff --git a/aiogram/bot/base.py b/aiogram/bot/base.py index 5692a3e7..c9432726 100644 --- a/aiogram/bot/base.py +++ b/aiogram/bot/base.py @@ -72,9 +72,6 @@ class BaseBot: self.session = aiohttp.ClientSession(connector=connector, request_class=request_class, loop=self.loop, json_serialize=json.dumps) - # Temp sessions - self._temp_sessions = [] - # Data stored in bot instance self._data = {} @@ -90,40 +87,6 @@ class BaseBot: """ if self.session and not self.session.closed: await self.session.close() - for session in self._temp_sessions: - if not session.closed: - await session.close() - - @deprecated('Manually you may use `aiohttp.ClientSession` instead of temp session') - def create_temp_session(self, limit: base.Integer = 1, force_close: base.Boolean = False) -> aiohttp.ClientSession: - """ - Create temporary session - - :param limit: Limit of connections - :type limit: :obj:`int` - :param force_close: Set to True to force close and do reconnect after each request (and between redirects). - :type force_close: :obj:`bool` - :return: New session - :rtype: :obj:`aiohttp.TCPConnector` - """ - session = aiohttp.ClientSession( - connector=aiohttp.TCPConnector(limit=limit, force_close=force_close), - loop=self.loop, json_serialize=json.dumps) - self._temp_sessions.append(session) - return session - - @deprecated('Manually you may use `aiohttp.ClientSession` instead of temp session') - async def destroy_temp_session(self, session: aiohttp.ClientSession): - """ - Destroy temporary session - - :param session: target session - :type session: :obj:`aiohttp.ClientSession` - """ - if not session.closed: - await session.close() - if session in self._temp_sessions: - self._temp_sessions.remove(session) async def request(self, method: base.String, data: Optional[Dict] = None, @@ -168,23 +131,19 @@ class BaseBot: if destination is None: destination = io.BytesIO() - session = self.create_temp_session() url = api.Methods.file_url(token=self.__token, path=file_path) dest = destination if isinstance(destination, io.IOBase) else open(destination, 'wb') - try: - async with session.get(url, timeout=timeout, proxy=self.proxy, proxy_auth=self.proxy_auth) as response: - while True: - chunk = await response.content.read(chunk_size) - if not chunk: - break - dest.write(chunk) - dest.flush() - if seek: - dest.seek(0) - return dest - finally: - await self.destroy_temp_session(session) + async with self.session.get(url, timeout=timeout, proxy=self.proxy, proxy_auth=self.proxy_auth) as response: + while True: + chunk = await response.content.read(chunk_size) + if not chunk: + break + dest.write(chunk) + dest.flush() + if seek: + dest.seek(0) + return dest async def send_file(self, file_type, method, file, payload) -> Union[Dict, base.Boolean]: """ diff --git a/examples/proxy_and_emojize.py b/examples/proxy_and_emojize.py index dcc9406b..d979243c 100644 --- a/examples/proxy_and_emojize.py +++ b/examples/proxy_and_emojize.py @@ -1,6 +1,8 @@ import asyncio import logging +import aiohttp + from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.types import ParseMode @@ -28,29 +30,29 @@ bot = Bot(token=API_TOKEN, loop=loop, proxy=PROXY_URL) dp = Dispatcher(bot) +async def fetch(url, proxy=None, proxy_auth=None): + async with aiohttp.ClientSession() as session: + async with session.get(url, proxy=proxy, proxy_auth=proxy_auth) as response: + return await response.text() + + @dp.message_handler(commands=['start']) async def cmd_start(message: types.Message): - # Create a temporary session - session = bot.create_temp_session() - content = [] # Make request (without proxy) - async with session.get(GET_IP_URL) as response: - content.append(text(':globe_showing_Americas:', bold('IP:'), code(await response.text()))) - # This line is formatted to '🌎 *IP:* `YOUR IP`' + ip = await fetch(GET_IP_URL) + content.append(text(':globe_showing_Americas:', bold('IP:'), code(ip))) + # This line is formatted to '🌎 *IP:* `YOUR IP`' # Make request through proxy - async with session.get(GET_IP_URL, proxy=bot.proxy, proxy_auth=bot.proxy_auth) as response: - content.append(text(':locked_with_key:', bold('IP:'), code(await response.text()), italic('via proxy'))) - # This line is formatted to '🔐 *IP:* `YOUR IP` _via proxy_' + ip = await fetch(GET_IP_URL, bot.proxy, bot.proxy_auth) + content.append(text(':locked_with_key:', bold('IP:'), code(ip), italic('via proxy'))) + # This line is formatted to '🔐 *IP:* `YOUR IP` _via proxy_' # Send content await bot.send_message(message.chat.id, emojize(text(*content, sep='\n')), parse_mode=ParseMode.MARKDOWN) - # Destroy temp session - await bot.destroy_temp_session(session) - # In this example you can see emoji codes: ":globe_showing_Americas:" and ":locked_with_key:" # You can find full emoji cheat sheet at https://www.webpagefx.com/tools/emoji-cheat-sheet/ # For representing emoji codes into real emoji use emoji util (aiogram.utils.emoji)