ChainLit Python应用部署Heroku失败,出现H10(应用崩溃)错误
解决ChainLit应用部署Heroku后H10崩溃问题
以下是针对H10错误的排查和解决步骤:
1. 获取完整崩溃日志
当前仅有的路由日志无法说明崩溃根源,需查看Heroku dyno的启动日志:
- 执行命令:
heroku logs --tail --app <你的Heroku应用名> - 或登录Heroku控制台,进入应用的「More > View logs」,查看启动阶段的报错信息,比如依赖缺失、环境变量未找到、端口冲突等。
2. 修正端口配置
Heroku会通过PORT环境变量分配随机端口,ChainLit默认使用固定端口,需修改启动命令适配:
将Procfile内容改为:
web: chainlit run genai.py --port $PORT --headless
--headless参数用于适配Heroku的无头运行环境,避免因UI启动失败导致崩溃。
3. 配置Heroku环境变量
你在Bitbucket构建步骤中导出的Azure OpenAI相关变量,并未同步到Heroku的运行环境中,需手动配置:
- 登录Heroku控制台,进入应用的「Settings > Config Vars」
- 添加以下变量:
AZURE_OPENAI_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_VERSIONAZURE_OPENAI_DEPLOYMENTAZURE_OPENAI_MODEL
- 或通过CLI执行:
heroku config:set AZURE_OPENAI_KEY=xxx AZURE_OPENAI_ENDPOINT=xxx ... --app <你的应用名>
4. 统一Python版本
Bitbucket使用Python 3.12,但Heroku默认可能使用不同版本,需在项目根目录添加runtime.txt文件,指定版本:
python-3.12.0
确保Heroku使用与构建环境一致的Python版本,避免依赖兼容性问题。
5. 确认打包文件完整性
检查Bitbucket打包的my-app.tar.gz是否包含所有必要文件:
- 确保
genai.py、Procfile、requirements.txt等文件已被git追踪(未被.gitignore排除),因为git archive仅打包git追踪的文件。 - 可在Bitbucket构建步骤中添加
ls -la命令,查看打包前的文件列表,确认无遗漏。
6. 验证依赖安装
确认Heroku上的依赖是否正确安装:
- 查看Heroku日志中的
Installing dependencies阶段,是否有报错(如依赖版本冲突、缺失系统库)。 - 若ChainLit依赖系统库,需添加
Aptfile到项目根目录,指定需要安装的系统包,比如:
libpq-dev
内容的提问来源于stack exchange,提问作者Ali Asad
相关产品推荐
相关产品推荐

