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

如何在Heroku上部署Flask后端并解决部署后访问报错问题

问题排查与解决步骤

从你提供的代码、配置和部署场景来看,问题大概率出在以下几个常见的Heroku Flask部署错误点,按优先级排查修复即可:

1. 移除无权限执行的数据库创建代码

Heroku 提供的 PostgreSQL 服务已经预先创建好了对应DATABASE_URL的数据库,且分配给你的数据库用户没有创建新数据库的权限,你代码中调用create_database的逻辑会直接抛出权限异常导致服务启动失败。
请直接删除setup_db函数中以下三行代码:

engine = sqlalchemy.create_engine(database_path)
if not database_exists(engine.url):
  create_database(engine.url)

同时请确保setup_db函数内的所有代码都有正确的缩进(你贴出的代码中函数定义后的代码没有缩进,属于语法错误,如果实际代码也是如此请修正缩进)。

2. 修正Procfile的启动入口配置

从你给出的目录结构和Procfile内容来看,大概率是入口路径配置错误导致gunicorn无法找到Flask app实例:

  • 如果你的Flask app实例定义在根目录的app.py文件中,请将Procfile内容修改为web: gunicorn app:app
  • 如果你的Flask app是放在flaskr文件夹下的__init__.py中,请确认__init__.py内确实有导出app实例的语句(比如app = create_app()),否则gunicorn无法正常导入服务。

3. 检查依赖配置是否完整

请确认你的requirements.txt文件中包含以下必要依赖(版本号可匹配你本地使用的版本):

Flask
Flask-SQLAlchemy
gunicorn
psycopg2-binary
sqlalchemy

缺少psycopg2-binary会导致无法连接PostgreSQL,缺少gunicorn会导致服务启动失败。

4. 验证修复效果

修复完成后可以先在本地运行对应gunicorn启动命令验证服务能正常启动,再推送到Heroku部署。如果还有异常,可执行heroku logs --tail查看实时启动日志,根据具体的错误提示进一步定位问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:06:03