如何让Telegram机器人在PythonAnywhere云端持续运行?
在PythonAnywhere上让Telegram机器人永久运行的解决方案
1. 启用PythonAnywhere的「Always-on Tasks」
这是官方提供的进程保活工具,会自动监控机器人进程,一旦停止就重启。
- 登录PythonAnywhere后台,进入「Tasks」标签页
- 点击「Add a new task」,输入机器人启动命令,示例:
python3 /home/你的用户名/机器人目录/bot.py - 勾选「Always on」选项后保存任务
- 注意:免费账户的Always-on Tasks每日有100小时CPU额度限制,高负载场景可能耗尽;付费账户无此限制。
2. 添加心跳机制维持连接
长时间无交互可能导致Telegram API连接断开,定期发送心跳可保持连接活跃:
- 在机器人代码中加入定时请求逻辑,比如每30分钟调用一次
getMe接口 - 示例代码(整合到主循环):
import schedule import time from telegram import Bot bot = Bot(token='你的机器人Token') def send_heartbeat(): try: bot.get_me() print("心跳检测成功,连接正常") except Exception as e: print(f"心跳检测失败: {str(e)}") schedule.every(30).minutes.do(send_heartbeat) while True: schedule.run_pending() time.sleep(1) # 此处保留原机器人消息处理逻辑
3. 捕获异常实现自动重启
机器人可能因网络错误、API异常崩溃,外层循环捕获异常可实现自动重启:
import time import sys import os from telegram.ext import Updater def run_bot(): updater = Updater(token='你的机器人Token', use_context=True) dp = updater.dispatcher # 注册命令、消息处理器等逻辑 # ... 你的处理器代码 ... updater.start_polling() updater.idle() if __name__ == '__main__': while True: try: run_bot() except Exception as e: print(f"机器人异常退出: {str(e)}") print("5秒后自动重启...") time.sleep(5) os.execv(sys.executable, [sys.executable] + sys.argv)
4. 注意资源限制
- 免费账户每日CPU额度100小时,高负载场景需考虑升级付费方案
- 优化代码避免内存泄漏,进程占用内存过高会被系统强制终止
内容的提问来源于stack exchange,提问作者uday kiran
相关产品推荐
相关产品推荐

