从crontab启动而不是手动启动时出现SSL错误发生了什么问题?

2024-06-25 23:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小电报机器人在树莓皮上运行。它使用aiogram框架,该框架使用asyncioaiohttp。当通过python bot.py启动bot时,一切正常。但是如果我将@reboot <path to python> <path to bot.py> > bot.py.log添加到pi的crontab中,日志会给出以下错误:

Aiohttp client throws an error: ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Connect call failed ('2001:67c:4e8:f004::9', 443, 0, 0)]

我不明白为什么这个错误只发生在通过crontab启动时,而不是手动启动时。我在pi的控制台中粘贴了用于crontab的精确命令,没有得到错误。你知道发生了什么事以及如何解决这个问题吗

编辑: 由于我越来越相信这可能是python和aiohttp的问题,下面是完整的错误堆栈:

File "/home/pi/bot_directory/TelegramBot.py", line 467, in <module>
    executor.start_polling(dp, skip_updates=True)

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/utils/executor.py", line 41, in start_polling
    executor.start_polling(reset_webhook=reset_webhook, timeout=timeout, relax=relax, fast=fast)

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/utils/executor.py", line 309, in start_polling
    loop.run_until_complete(self._startup_polling())

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/utils/executor.py", line 360, in _startup_polling
    await self._welcome()

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/utils/executor.py", line 350, in _welcome
    user = await self.dispatcher.bot.me

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/bot/bot.py", line 29, in me
    setattr(self, '_me', await self.get_me())

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/bot/bot.py", line 217, in get_me
    result = await self.request(api.Methods.GET_ME, payload)

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/bot/base.py", line 208, in request
    return await api.make_request(self.session, self.server, self.__token, method, data, files,

File "/home/pi/miniforge3/envs/bot_directory/lib/python3.9/site-packages/aiogram/bot/api.py", line 142, in make_request
    raise exceptions.NetworkError(f"aiohttp client throws an error: {e.__class__.__name__}: {e}")

Aiohttp client throws an error: ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Temporary failure in name resolution]

Tags: inpyselfhomelibpackagesbotline