Buk*_*ala 4 python heroku flask python-2.7
因此,我确实有一个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)
Run Code Online (Sandbox Code Playgroud)
程序文件:
web: gunicorn app:app
Run Code Online (Sandbox Code Playgroud)
笔记:
我进行了所有设置,包括virtualenv和requirements.txt
我认为,可能的原因是,“ gunicorn”未使用正确的端口。Heroku为应用程序分配端口。我不确定该端口是随机分配的还是默认端口。但是,如果这是导致问题的原因,则将Procfile其更改为应解决的问题:
web: gunicorn -b :$PORT app:app
Run Code Online (Sandbox Code Playgroud)
这种方式可以捕获Heroku所做的任何端口分配。或者,如果您选择为其设置环境变量,PORT也将使用它。gunicorn的默认端口为8000,因此PORT在Heroku上将环境变量设置为8000也可以。
我非常确定,app.run它不会以任何方式影响gunicorn服务器。我认为gunicorn只是在app:app(module:appinstance)指定的模块中找到应用程序实例,然后加载视图。