You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:02:29