访问Heroku应用程序时出错

2024-04-26 13:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常非常简单的烧瓶应用程序,我正在Heroku上测试它,看看它是否有效。我尝试将它连接到我的GitHub repo并使用Heroku CLI,但都没有改变结果

from flask import Flask

app = Flask("__name__")


@app.route("/api", methods=["GET"])
def get():
    return {"success": "much success"}


app.run(debug=True)

我遵循了Udemy关于部署到Heroku的教程,但它不起作用。我被告知将这些文件添加到我的根目录:

// runtime.txt
python-3.8.3

// requirements.txt
// created by running pip3 freeze > requirements.txt
// manually added 'uwsgi'
appdirs==1.4.3
attrs==19.3.0
black==19.10b0
click==7.1.1
Flask==1.1.2
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
pathspec==0.8.0
regex==2020.4.4
toml==0.10.0
typed-ast==1.4.1
Werkzeug==1.0.1
uwsgi

// uwsgi.ini
[uwsgi]
http-socket = :$(PORT)
master =true
die-on-term = true
module = app:app 
memory-report = true

// Procfile
web: uwsgi uwsgi.ini

当我在Heroku上访问我的应用程序时,我收到一个“应用程序错误”。这是Heroku日志显示的内容:

2020-04-20T20:32:57.218876+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=ninny-code-flask.herokuapp.com request_id=d355b4b9-c532-4971-91fa-e3421ca98971 fwd="104.178.145.19" dyno= connect= service= status=503 bytes= protocol=https

Tags: githubtxttrueapp应用程序flaskgetheroku
2条回答

我认为您缺少需要使用env变量$PORT(由Heroku提供)分配的端口

app.run(debug=False, port=int(os.environ.get("PORT", 5000)), host='0.0.0.0')

查看调试输出,我看到脚本正在退出/崩溃,因为端口已经在使用中。 检查命令行或服务上是否有任何其他本地服务器在同一端口上运行。看到这条线了吗?它告诉你失败的原因

OSError: [Errno 98] Address already in use

找到pid进程并将其关闭/终止。端口上必须有另一个进程正在侦听。您可以使用以下命令了解该过程:

$ lsof -i :5000

然后运行sudo终止进程

sudo kill -9 <process_id>

但是,我现在在heroku日志中看到错误代码h10

如果在节点中,则会引发此错误。在js环境中,您忘记设置启动脚本。Heroku使用此脚本启动你的应用程序,因此如果它丢失,它将抛出H10应用程序崩溃错误代码消息

检查Procfile文件,查找间距错误

Wrong web : node server.js
Correct web:node server.js

相关问题 更多 >