Ошибка при хостинге бота на aiogram3 (pythonanywhere)

Пытаюсь поставить телеграмм бота на aiogram3 на хостинг pythonanywhere. Но появляется ошибка при запуске: ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable].

Полная ошибка:

Traceback (most recent call last):
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore[return-value]  # noqa
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1064, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1049, in create_connection
    sock = await self._connect_sock(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 960, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 500, in sock_connect
    return await fut
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 505, in _sock_connect
    sock.connect(address)
OSError: [Errno 101] Network is unreachable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiogram/client/session/aiohttp.py", line 167, in make_request
    async with session.post(
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/client.py", line 1167, in __aenter__
    self._resp = await self._coro
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/client.py", line 562, in _request
    conn = await self._connector.connect(
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 1209, in _create_direct_connection
    raise last_exc
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 1178, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiohttp/connector.py", line 988, in _wrap_create_connection
    raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/SmerchTT/bot/main.py", line 170, in <module>
    asyncio.run(main())
  File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
    return future.result()
  File "/home/SmerchTT/bot/main.py", line 166, in main
    await bot.delete_webhook(drop_pending_updates=True)
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiogram/client/bot.py", line 1221, in delete_webhook
    return await self(call, request_timeout=request_timeout)
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiogram/client/bot.py", line 432, in __call__
    return await self.session(self, method, timeout=request_timeout)
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiogram/client/session/base.py", line 257, in __call__
    return cast(TelegramType, await middleware(bot, method))
  File "/home/SmerchTT/.local/lib/python3.10/site-packages/aiogram/client/session/aiohttp.py", line 174, in make_request
    raise TelegramNetworkError(method=method, message=f"{type(e).__name__}: {e}")
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable]
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f09a18fffa0>

Я смотрел другие форумы, там говорилось что надо использовать другой прокси сервер, указав его в Bot():

bot = Bot(token='...', proxy='http://proxy.server:3128')

Но класс Bot() не имеет аргумента proxy, скорее всего из-за aiogram3

Скрин с VS Code

Bot.__init__() got an unexpected keyword argument 'proxy'

Также использовал библиотеку aiohttp-socks. Но ничего не вышло.


Ответы (1 шт):

Автор решения: QuL1ux

Я смог решить свою проблему. Я оставлю тут этот пост, чтобы помочь тем кто столкнётся с этой проблемой.


  1. Для начала нужно импортировать установить модуль aiohttp-socks в bash-консоли
pip install aiohttp-socks
  1. Затем нужно импортировать модуль AiohttpSession
from aiogram.client.session.aiohttp import AiohttpSession
  1. Теперь нужно создать переменную session
session = AiohttpSession(proxy='http://proxy.server:3128') # в proxy указан прокси сервер pythonanywhere, он нужен для подключения
  1. В объекте бота указываем session=session
bot = Bot(token='...', session=session)

Мне это помогло, надеюсь поможет и другим.

→ Ссылка