Heroku Procfile正常,dynos已正确缩放,但我仍然收到错误消息“没有运行web进程”

2024-05-29 03:34:50 发布

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

我为我的cs50最终项目创建了一个flask应用程序。它已通过Github成功部署到Heroku,但由于某些原因,它无法工作

当使用flask run在本地运行时,它可以正常工作

My project folder is organized like this

Procfile内容如下所示:

web: gunicorn app:app

我想这是对的,根据 this helpful post

按照heroku的指示,我运行heroku logs --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进程呢?
此外,我搜索了网络(看看这些帖子,例如:ABC),人们通常通过运行
heroku ps:scale web=1来解决这个问题

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

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

看来dynos标度是可以的

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

Here you can check out the github repository with all the code(请不要介意可怜的README.md文件,我还是会写一个好的)


Tags: 文件the项目webapp消息flaskheroku
1条回答
网友
1楼 · 发布于 2024-05-29 03:34:50

我在heroku上部署了你的应用程序。没有类似no web proccess running的错误。 通过进入heroku的概览选项卡,您可以查看是否附加了任何dyno。 enter image description here

但gunicorn工作人员仍未能启动。原因是您没有在app.run()中定义主机和端口参数

应该是这样的:

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

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

herokudoesn't support sqliteworker超时重新启动,所有文件都处于部署状态。任何上载的文件或更新的文件都将丢失。这是resources

Heroku有postgresql数据库,可以使用,但是您需要使用psgcopg2(我不清楚),或者使用flask-sqlalchemy支持各种数据库。 你可以找到一些articles和视频来使用postgresql部署应用程序

同样,您将无法在heroku中保存用户的个人资料图片。 您可以使用firebase存储系统和pyrebase包将文件上载到服务器docs

您可以访问已部署的应用程序here

相关问题 更多 >

    热门问题