在Heroku上运行Flask应用程序

2024-10-03 17:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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文件

^{pr2}$

要求.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

应用程序副本(运行部分)

# 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 thread和来自{a2}的答案。当我试图进入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上部署应用程序时,我没有遇到任何问题。但这个应用程序比其他应用程序复杂。在


Tags: torunfrompygitbashapp应用程序
1条回答
网友
1楼 · 发布于 2024-10-03 17:17:04

这不是一个答案,但必须包括一个适当大小的代码块

当前回溯的部分问题是它没有真正提供调试的相关信息。您可以将错误记录在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()

相关问题 更多 >