当前位置: 首页 > 知识库问答 >
问题:

Heroku Procfile是OK和dynos是正确的缩放,但我仍然得到错误消息"没有web进程运行"

李嘉胜
2023-03-14

我为我的cs50最终项目创建了一个烧瓶应用程序。它通过Github成功部署到Heroku,但由于某种原因它不起作用。

在本地运行flask run时,它工作正常。

我的项目文件夹是这样组织的

Procfile的内容如下:

web: gunicorn app:app

根据这篇有用的帖子,我想这是对的。

按照heroku的指示,我运行了heroku日志--tail--app[app],查看问题出在哪里

这是我得到的错误信息:

at=error code=H14 desc="No web processes running" method=GET path="/" host=joking.herokuapp.com request_id=029d94b3-938c-4623-8421-7246c2ba52dc fwd="177.104.215.5" dyno= connect= service= status=503 bytes= protocol=https

当我在Procfile中明确定义它时,为什么它会说没有运行web进程
此外,我在网上搜索(看看这些帖子,例如:A、B和C),人们经常通过运行heroku ps:scale web=1来解决这个问题

我这样做了,但不幸的是,它没有解决问题。以下是它返回的信息:

Scaling dynos... done, now running web at 1:Free

所以看起来dynos缩放是可以的。

那会是什么问题呢?我错过什么了吗<我接受任何建议。也许我的代码有问题?还是文件和文件夹的组织方式?古尼科恩?

在这里,您可以查看带有所有代码的github存储库(请不要介意糟糕的README. md文件,我仍然会写一个好的)

共有1个答案

郎雪风
2023-03-14

Gunicorn工作器仍然无法启动。原因是您没有在app.run()中定义主机和端口参数

应该是这样的:

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(host="0.0.0.0",port=port)

我注意到的第二件事是,您正在为数据库使用sqlite(db文件)。

heroku不支持sqlite worker超时重启,所有文件都处于部署状态,任何上传的文件或更新的文件都将丢失。这里是资源。

Heroku有postgresql数据库可以使用,但是你需要使用psgcopg2(我不清楚)或者使用flask-sqlalchey,它支持各种数据库。你可以找到几篇文章和视频来部署postgresql应用程序。

同样,您将无法在heroku中保存profile_pics用户。您可以使用带有pyrebase包的Firebase存储系统将文件上传到服务器。文档

您可以在此处访问已部署的应用程序。

 类似资料: