You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用GitHub Desktop部署Discord.py至Heroku遇构建失败及H14错误求助

搞定Heroku H14错误:无Web进程运行的问题

嘿,我来帮你梳理下这个问题——你遇到的H14错误其实和你的Discord机器人部署逻辑直接相关,咱们一步步拆解:

首先,先明确错误原因:你部署的是一个Discord机器人,Procfile里定义的是worker: python economia.py(这是后台运行的进程,不是web服务),但你尝试访问Heroku分配给你的web域名,这时候Heroku找不到运行的web进程,自然就抛出H14错误了。

从你提供的Heroku日志也能看出来,目前只有构建成功和web访问失败的记录,完全没有worker进程启动的日志——这说明你的worker dyno可能还没被激活,这也是机器人可能没正常运行的关键!

解决步骤分两种情况:

情况1:你不需要web页面,只想让Discord机器人跑起来

这时候H14错误其实不影响机器人的运行,你只需要激活worker dyno就行:

  • 打开Heroku控制台,找到你的billionaireboysclub应用
  • 切换到「Resources」标签页
  • 找到「worker python economia.py」这一项,把旁边的开关打开(默认可能是关闭的)
  • 点击「Save Changes」,Heroku就会启动worker进程运行你的机器人
  • 之后你可以再看Heroku日志,如果出现机器人的启动、登录Discord的相关日志,就说明成功了

情况2:你需要一个web页面(比如做健康检查、展示机器人信息)

如果确实需要web服务,你得给应用加个简单的web服务器,同时保留worker进程:

  1. 在你的项目里添加一个web服务文件(比如web.py),用Flask写个最简单的响应:
    import os
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def home():
        return "Billionaire Boys Club Bot is running!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
    
  2. 修改requirements.txt,添加Flask依赖:
    discord.py
    Flask==2.0.1
    
  3. 更新Procfile,同时定义web和worker进程:
    web: python web.py
    worker: python economia.py
    
  4. 重新部署到Heroku后,回到「Resources」标签页,把web和worker的开关都打开
  5. 这时候再访问你的Heroku域名,就能看到web页面的内容,也不会有H14错误了

另外提个小注意:Heroku的免费dyno会在30分钟无活动后休眠,对于worker进程来说,Discord的心跳机制一般能保持它活跃,但如果是web进程,你可能需要用外部工具定期ping你的web地址来防止休眠。


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

火山引擎 最新活动