Heroku python应用程序崩溃

时间:2017-06-07 04:21:18

标签: python heroku flask

所以我经过这么多试验后终于在heroku上部署了我的python应用程序,现在,该应用程序无法运行。它在日志中返回错误,代码为" H10"和状态503。

我的app.py只是

app = Flask(__name__)

@app.route('/')
def hello():
return "Hello world"

if __name__ = '__main__':
    app.run(debug = True)

我的要求.txt

AppInst==2.1.5
Flask==0.12.2
Jinja2==2.9.6
MarkupSafe==1.0
Pillow==4.0.0
PyYAML==3.11
Pygments==2.1.3
Werkzeug==0.12.2
appdirs==1.4.3
apptools==4.4.0
argparse==1.4.0
attrs==15.2.0
backports-abc==0.5  
backports.shutil-get-terminal-size==1.0.0   
beautifulsoup4==4.4.1
bleach==1.5.0
boto==2.40.0
certifi==2017.4.17
chardet==3.0.3
click==6.7
colorama==0.3.9
colorthief==0.2.1
configobj==5.0.6
configparser==3.5.0
cycler==0.10.0  
decorator==4.0.9
dlib==19.4.0
docutils==0.13.1
ecdsa==0.13
encore==0.7.0
enstaller==4.8.12
entrypoints==0.2.2
enum34==1.1.6
envisage==4.6.0
esky==0.9.8
feedparser==5.2.1
flake8==3.3.0
futures==3.0.3
gnureadline==6.3.3
gunicorn==19.7.1
hatcher==0.10.4
html5lib==0.999
humanize==0.5.1
idna==2.5
imutils==0.4.3
ipykernel==4.5.2
ipython==4.0.0
ipython-genutils==0.1.0 
ipywidgets==6.0.0
itsdangerous==0.24
jedi==0.10.2
jsonify==0.5
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.0.0   
jupyter-console==5.1.0  
jupyter-core==4.3.0 
keyring==10.3.3
lxml==3.8.0
matplotlib==2.0.2
mccabe==0.6.1
memory-profiler==0.43   
mistune==0.7.4
mpmath==0.19
nbconvert==5.2.1
nbformat==4.3.0
nose==1.3.7
notebook==4.4.1
numpy==1.12.1
okonomiyaki==0.16.10
olefile==0.44
opencv-python==3.2.0.7
packaging==16.8
pandas==0.20.2
pandocfilters==1.4.1
path.py==10.3.1
pathlib2==2.2.1
pbr==3.0.1
pep8==1.7.0
pexpect==4.2.1
pickleshare==0.7.4
pip==9.0.1
plotly==2.0.9
ply==3.10
prompt-toolkit==1.0.13  
psutil==5.2.2
psycopg2==2.7.1
ptyprocess==0.5.1
pyasn1==0.2.3
pycodestyle==2.3.1
pycrypto==2.6.1
pyface==5.1.0
pyflakes==1.5.0
pyglet==1.1.4
pymongo==3.4.0
pyparsing==2.2.0
python-dateutil==2.6.0
pytz==2017.2
pyzmq==16.0.2
qtconsole==4.3.0
requests==2.17.3
rsa==3.4.2
scipy==0.19.0
simplegeneric==0.8.1
singledispatch==3.4.0.3
six==1.10.0
stevedore==1.23.0
sympy==1.0
tabulate==0.7.7
terminado==0.6
testpath==0.3.1
tornado==4.5.1
traitlets==4.3.2
traits==4.6.0
traits-enaml==0.2.1
traitsui==5.1.0
tzlocal==1.4
urllib3==1.21.1
virtualenv==15.1.0
wcwidth==0.1.7
cmake==0.7.1

我的proc文件

web: gunicorn malicha:app --log-file=-

构建包

https://github.com/J-A-M-E-5/heroku14-buildpack-python-opencv-dlib.git

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,有两件事帮助了我。正如评论所说,Procfile(帮助您启动应用程序的东西)必须与您实际尝试启动的内容相匹配。

这就是你可能会说的:web gunicorn main:app runserver 0.0.0.0:$PORT --log-file=-

这就是所有事情的点滴之处:

第一个单词是您要求的过程类型,在这种情况下为“网络”。那里也可能说“ worker”,但我想您只有一个dyno,并且它是一个免费帐户,这意味着您想要的是。您以后可以随时添加复杂性。

绿色的独角兽旁边。

“ gunicorn”是处理Web请求的一种更有效的方法。您也可以在其中安装“ python”……但这是推荐的方法。

接下来是您遇到麻烦的地方。 “ main:app”或“ malicha:app” ...看起来很奇怪,对吧?这是哪里来的。

查看目录结构(即文件)。如果您要运行的东西称为

  • main.py,然后您需要main:app。

如果您要运行的东西称为

  • chatbot.py,然后您需要chatbot:app。

下一个很明显。

之后是端口。您可以像这样从Flask应用程序内部获取它:

if __name__ == "__main__":
    # get port number from Heroku
    port = int(os.getenv("PORT"))
    app.run(host='0.0.0.0', port=port, debug=True)

但是您不需要更改Procfile超出我所写的内容。

最后是日志。也很明显。

您也不需要Requirements.txt中的所有内容,但这是一个严重的问题,我们可以将其保存另一天。

希望有帮助。