Ошибка при хостинге бота на 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
Bot.__init__() got an unexpected keyword argument 'proxy'
Также использовал библиотеку aiohttp-socks. Но ничего не вышло.
Ответы (1 шт):
Автор решения: QuL1ux
→ Ссылка
Я смог решить свою проблему. Я оставлю тут этот пост, чтобы помочь тем кто столкнётся с этой проблемой.
- Для начала нужно импортировать установить модуль
aiohttp-socksв bash-консоли
pip install aiohttp-socks
- Затем нужно импортировать модуль
AiohttpSession
from aiogram.client.session.aiohttp import AiohttpSession
- Теперь нужно создать переменную
session
session = AiohttpSession(proxy='http://proxy.server:3128') # в proxy указан прокси сервер pythonanywhere, он нужен для подключения
- В объекте бота указываем
session=session
bot = Bot(token='...', session=session)
Мне это помогло, надеюсь поможет и другим.
