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:app
(module:appinstance
)指定的模块中找到应用程序实例,然后加载视图。
- 参考:http : //docs.gunicorn.org/en/stable/settings.html#bind