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

如何解决Google Cloud App Engine频繁重启Discord Python Bot的问题?

解决Discord Bot部署至GAE后自动重启的问题

问题根源

Google App Engine(GAE)标准环境默认将应用视作HTTP Web服务,要求进程必须监听PORT环境变量指定的端口,并响应健康检查请求(如GET /)返回200-299或404状态码。你的Discord Bot是长连接后台进程,未处理HTTP请求,导致GAE判定进程启动失败,每隔约10分钟触发一次重启。

解决方案

在Bot代码中添加轻量HTTP服务器,专门处理GAE的健康检查请求,同时让Bot在后台运行。

步骤1:修改Bot代码

以Flask为例(也可使用Python内置http.server),在bot.py中加入HTTP服务逻辑:

import os
import threading
from flask import Flask
import discord

# 初始化Flask用于健康检查
app = Flask(__name__)

@app.route('/')
def health_check():
    return "Bot is running", 200

# 你的Discord Bot核心逻辑
intents = discord.Intents.default()
intents.message_content = True  # 根据Bot功能需求调整权限
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f"已登录为 {client.user}")

# 后台启动HTTP服务
def run_http_server():
    port = int(os.environ.get('PORT', 8080))  # GAE会自动设置PORT环境变量
    app.run(host='0.0.0.0', port=port)

if __name__ == "__main__":
    # 启动HTTP服务守护线程(随主进程退出)
    http_thread = threading.Thread(target=run_http_server)
    http_thread.daemon = True
    http_thread.start()
    
    # 启动Discord Bot
    client.run("你的Discord Bot Token")

步骤2:更新依赖

在requirements.txt中添加Flask依赖(使用Flask时需要):

discord.py>=2.3.0
flask>=2.3.0

步骤3:重新部署

将修改后的代码重新部署至GAE,此时进程会同时运行HTTP服务和Discord Bot,满足GAE健康检查要求,不会再被强制重启。

补充说明

  • 若不想引入Flask依赖,可改用Python内置http.server模块实现极简HTTP服务,无需额外安装包。
  • 你的app.yaml配置无需修改,manual_scaling: instances:1已设置固定运行1个实例,避免自动缩放带来的额外问题。

内容的提问来源于stack exchange,提问作者Karan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:50:22