简介
- 本文将引导你把
python-telegram-bot的 HTTP 后端从httpx更换为aiohttp。httpx和aiohttp都是用于发起 HTTP 请求的库。 - 在开始之前,请确保你的环境中已安装 Python 和 python-telegram-bot 库。python-telegram-bot 的安装命令见下方。
更换库
安装
- 首先,你需要一个库,它提供了一个用于处理向 Telegram 发起请求的类。安装带有
aiohttp_request扩展的ptbcontrib,它也会一并安装aiohttp:
- 将相同的依赖添加到你的
requirements.txt中,以便 Square Cloud 在部署时安装它们:
requirements.txt
将 httpx 更换为 aiohttp
- 接下来,我们需要在实例化机器人客户端的文件中导入
AiohttpRequest。
- 这个类将处理所有向 Telegram 发起的请求,而不是默认的
httpx。 AiohttpRequest将在 PTB 客户端实例中使用,如下例所示。两个示例都从TELEGRAM_BOT_TOKEN环境变量读取机器人令牌,因此令牌永远不会出现在你的代码中:
在 Square Cloud 上运行
在项目根目录创建squarecloud.app 文件。对于主文件为 main.py 的机器人:
squarecloud.app
TELEGRAM_BOT_TOKEN 环境变量:可以在上传表单的 Advanced configuration 中、在应用的 Environment Variables 页面中(之后重启机器人),或通过 CLI 设置:
为什么要做这个更换?
- 在长时间轮询 Telegram 的机器人中,默认的
httpx后端可能会频繁抛出NetworkError异常,例如ReadError。切换到aiohttp是消除这些错误的常用方法。 - 如果你的机器人运行时没有出现这些错误,就不需要做这个更换。
后续步骤
Telegram 机器人
从零开始创建、部署并测试 Telegram 机器人。
环境变量
管理机器人的令牌和其他密钥。
应用无法启动
修复 ModuleNotFoundError 和其他启动失败问题。
你喜欢这篇文章吗?
- 我们精心创作了这些内容,只为提供尽可能好的帮助。 如果这篇文章对你有任何帮助,请支持我们的工作!已经有开发者在 Google 和 Trustpilot 上给 Square Cloud 打出了 4.9/5 分(共 402 条评价),也留下你的评价吧!这能帮助我们了解什么对你最重要。
Google Reviews
在 Google Reviews 上留下你的评价。
Trustpilot
在 Trustpilot 上留下你的评价。

