2014-11-08 172 views
0

我试图在Heroku上运行Flask应用程序,我得到了一些令人沮丧的结果。我对事物的操作方面不感兴趣。我只想上传我的代码并让它运行。推到Heroku的git的远程工作正常(git push heroku master),但是当我尾部日志(heroku logs -t)我看到了以下错误:在Heroku上运行Flask应用程序

2014-11-08T15:48:50+00:00 heroku[slug-compiler]: Slug compilation started 
2014-11-08T15:48:58+00:00 heroku[slug-compiler]: Slug compilation finished 
2014-11-08T15:48:58.607107+00:00 heroku[api]: Deploy 2ba1345 by <my-email-address> 
2014-11-08T15:48:58.607107+00:00 heroku[api]: Release v5 created by <my-email-address> 
2014-11-08T15:48:58.723704+00:00 heroku[web.1]: State changed from crashed to starting 
2014-11-08T15:49:01.458713+00:00 heroku[web.1]: Starting process with command `gunicorn app:app` 
2014-11-08T15:49:02.538539+00:00 app[web.1]: bash: gunicorn: command not found 
2014-11-08T15:49:03.340833+00:00 heroku[web.1]: Process exited with status 127 
2014-11-08T15:49:03.355031+00:00 heroku[web.1]: State changed from starting to crashed 
2014-11-08T15:49:04.462248+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=blueprnt.herokuapp.com request_id=e7f92595-b202-4cdb-abbc-309dcd3a04bc fwd="54.163.35.91" dyno= connect= service= status=503 bytes= 

这里的相关文件:

Procfile

web: gunicorn app:app 
heroku ps:scale web 

requirements.txt

Flask==0.10.1 
Flask-Login==0.2.11 
Flask-WTF==0.10.2 
Jinja2==2.7.3 
MarkupSafe==0.23 
Unidecode==0.04.16 
WTForms==2.0.1 
Werkzeug==0.9.6 
awesome-slugify==1.6 
blinker==1.3 
gnureadline==6.3.3 
gunicorn==19.1.1 
ipdb==0.8 
ipython==2.3.0 
itsdangerous==0.24 
peewee==2.4.0 
py-bcrypt==0.4 
pytz==2014.7 
regex==2014.10.24 
wsgiref==0.1.2 
wtf-peewee==0.2.3 

app.py(运行部分)

# Run application 
if __name__ == '__main__': 
    # from os import environs 
    # app.run(debug=False, port=environ.get("PORT", 5000), processes=2) 
    app.run(debug=True, port=33507) 

我从this threadthis thread试用过的答案。当我尝试到外壳的Heroku调查(heroku run bash)看来,什么是错我的应用环境:

(blueprnt)☀ website [master] heroku run bash 
/Users/andymatthews/.rvm/gems/ruby-1.9.3-p125/gems/heroku-3.15.0/lib/heroku/helpers.rb:91: warning: Insecure world writable dir /usr/local in PATH, mode 040777 
Running `bash` attached to terminal... up, run.8540 
~ $ ls 
Gruntfile.js __init__.py fixtures models.py  requirements.txt  static  vendor 
Procfile  app.py  forms.py node_modules settings.py  templates views 
README.md  blueprnt.db mixins.py package.json site-theme-assets.zip utils.py 
~ $ pwd 
/app 
~ $ whoami 
u15880 
~ $ which pip 
~ $ which git 
/usr/bin/git 
~ $ pip install -r requirements.txt 
bash: pip: command not found 

真的很喜欢,一些援助。在过去,当我将应用程序部署到Heroku时,我没有任何问题。但是这个应用程序比其他应用程序更复杂。

+0

你似乎没有导入'app'成'app.py'。这只是一种遗漏吗? – dirn 2014-11-08 16:31:45

+0

您可以尝试重新部署它,只需删除该应用程序,然后按照https://devcenter.heroku.com/articles/getting-started-with-python#introduction中所述的步骤重新制作该应用程序 – 2014-11-08 22:47:32

+0

您是否专门设置了您的Heroku项目使用Python?如果没有,Heroku将包含'package.json'的项目设置为节点buildpack。请参阅[这个答案](https://stackoverflow.com/questions/20171169/why-is-my-flask-app-being-detected-as-node-js-on-heroku/20171188#20171188)了解更多详情和一个解决方案(如果这确实是你的问题)。 – jonafato 2014-11-09 20:01:40

回答

1

这不是一个答案,但必须包括一个体面的大小代码块中的问题与当前的回溯是它并没有真正为调试提供相关信息

部分。您可以在heroku上记录这些错误,然后使用heroku log来获得应用程序错误的更多实质追踪。

通过在您的app.logger上添加处理程序来完成此操作。 Heroku的会拿起从sys.stderr数据,因此你可以使用一个logging.StreamHandler

import logging 
import sys 
from logging import Formatter 

def log_to_stderr(app): 
    handler = logging.StreamHandler(sys.stderr) 
    handler.setFormatter(Formatter(
    '%(asctime)s %(levelname)s: %(message)s ' 
    '[in %(pathname)s:%(lineno)d]' 
)) 
    handler.setLevel(logging.WARNING) 
    app.logger.addHandler(handler) 

if __name__ == '__main__': 
    log_to_stderr(app) 
    app.run() 
相关问题