Python Flask heroku应用程序错误


问题内容

因此,我确实有一个Flask应用程序,我可以在本地计算机上运行它,并将其成功部署到heroku中,但是当我这样做时,heroku open该网站一直在说应用程序错误。

这是在我的app.py中:

import random
import os

from flask import Flask
from gen_histogram import histogram
from sample import generate_probability, generate_word

app = Flask(__name__)

dict_histogram = histogram('tom_sawyer.txt')

tes_list = ["one", "fish", "two", "fish", "red", "fish", "blue", "fish"]


def try_random():
   return random.choice(tes_list)


@app.route('/')
def hello_world():
   return try_random()


if __name__ == '__main__':
   port = int(os.environ.get("PORT", 5000))
   app.run(debug=True, port=port)

程序文件:

web: gunicorn app:app

笔记:

我进行了所有设置,包括virtualenv和requirements.txt


问题答案:

我认为,可能的可能性是,枪色未使用正确的端口。Heroku为应用程序分配端口。我不确定该端口是随机分配的还是默认端口。但是,如果这是导致问题的原因,则将Procfile其更改为应该解决的问题:

web: gunicorn -b :$PORT app:app

这种方式可以捕获Heroku所做的任何端口分配。或者,如果您选择为其设置环境变量,PORT则也将使用它。gunicorn的默认端口为8000,因此PORT在Heroku上将环境变量设置为8000也可以。

我敢肯定,app.run它不会以任何方式影响gunicorn服务器。我认为gunicorn只是在app:appmodule:appinstance)指定的模块中找到应用程序实例,然后加载视图。