Python Flask heroku应用程序错误

时间:2017-02-03 08:09:17

标签: python python-2.7 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)

Procfile:

web: gunicorn app:app

注意:

  

我有一切设置,包括virtualenv和requirements.txt

2 个答案:

答案 0 :(得分:4)

我认为很可能是那个枪炮没有使用正确的端口。 Heroku为应用程序分配端口。我不完全确定该端口是随机分配还是默认端口。但是,如果这是导致问题的原因,将Procfile更改为此应修复它:

web: gunicorn -b :$PORT app:app

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

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

答案 1 :(得分:0)

我在包含

的根文件夹中创建了一个名为Procfile的文件
web: gunicorn -b :$PORT app:app

我是我的app.py

import os
...
port = int(os.environ.get('PORT', 5000))
...
app.run(host='0.0.0.0', port=port, debug=True)

Heroku dyno将设置它自己的PORT env,应用将使用它,而不是我在本地使用的默认5000。

https://github.com/Sean-Bradley/Seans-Python3-Flask-Rest-Boilerplate上的工作示例