在repl.it上托管Discord Bot失败 站点无法访问程序离线如何解决
问题排查与解决步骤
第一步:核查keep_alive服务代码逻辑
- 必须使用
0.0.0.0作为监听地址、8080作为监听端口,不能写死127.0.0.1或者自定义其他端口,标准Flask实现的keep_alive参考代码如下:
from flask import Flask from threading import Thread app = Flask('') @app.route('/') def home(): return "Bot is running" def run(): app.run(host='0.0.0.0',port=8080) def keep_alive(): t = Thread(target=run) t.start()
- 确认
keep_alive()函数调用放在bot.run()之前,bot.run()是阻塞逻辑,放在后面的话Web服务代码永远不会被执行。
第二步:核查repl.it运行环境配置
- 运行main.py后查看控制台输出,确认有没有Flask服务启动的正常日志,若出现依赖报错,在requirements.txt中添加
flask依赖后重启项目即可。 - 不要修改repl自动生成的项目运行配置,保持默认Python运行环境即可。
第三步:核查站点访问地址
- Web服务启动后repl界面顶部会弹出官方生成的公网访问地址,格式为
https://<项目名>.<用户名>.repl.co,直接复制该地址使用,不要手动拼接地址。 - 先在repl内置的Web预览窗口访问该地址,确认能正常返回你设置的响应内容,再用本地浏览器访问验证公网可达性。
第四步:核查Uptime Robot配置
- 监控类型选择
HTTP(s),监控地址填写上一步拿到的完整公网地址,必须带https://前缀。 - 监控间隔设置为5分钟即可,过短的监控间隔会触发repl免费版的限流规则,导致服务被临时阻断。
- 不要开启关键词校验、HTTP认证等额外校验规则,避免误判服务状态。
第五步:处理repl免费版额度限制问题
- repl免费版项目连续1小时无入站请求就会进入休眠,5分钟间隔的Uptime Robot请求刚好可以避免休眠,如果配置正确仍然出现关标签页就离线的情况,在repl控制台执行
kill 1强制重启项目即可,偶尔会出现运行环境卡住的异常,重启就能恢复。
内容的提问来源于stack exchange,提问作者AJ2000
相关产品推荐
相关产品推荐

