【问题标题】:Python, Flask: Heroku can not open (and run) appPython,Flask:Heroku 无法打开(和运行)应用程序
【发布时间】:2015-12-29 20:17:04
【问题描述】:

我有一个使用 Cloud9 IDE 编写的 Flask 应用程序。我在本地运行它:终端中的“python manage.py runserver”。 然后触发:

manager.add_command('runserver', Server(
    use_debugger = True,
    use_reloader = True,
    host = os.getenv('IP', '0.0.0.0'),
    port = int(os.getenv('PORT', 5000))
    )
)

这段代码位于 manage.py 文件中。

现在我想用 Heroku 运行它。我完全按照他们的教程进行操作。我只是不知道我的 Procfile 应该是什么。我是这样写的:

web: gunicorn manage:runserver

推动 git 等似乎一切正常。 当我输入:“heroku ps:scale web=1”时,我在终端中得到了这个:

Scaling dynos... done, now running web at 1:Free.

当我输入“Heroku open”时,我得到这个错误:

Opening fierce-spire-3069... xprop:  unable to open display ''
 xprop:  unable to open display ''
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 461: /usr/bin/xdg-open: w3m: not found
 xdg-open: no method available for opening 'https://fierce-spire-3069.herokuapp.com/'
 done

所以,我的应用无法打开.. 当我使用 Heroku 站点打开它时,我收到一条错误消息。这是我在日志中发现的:

2015-12-29T20:15:06.399443+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=fierce-spire-3069.herokuapp.com request_id=c5d76e45-5d56-45f4-a2bc-75bd7fc08b7f fwd="81.82.128.183" dyno= connect= service= status=503 bytes=

我做错了什么?

编辑

我将个人资料更改为:

web: python manage.py runserver "0.0.0.0:5000"

上面的 Heroku 日志中的错误信息已经消失,但是有一个新的:

2015-12-29T21:30:37.938957+00:00 app[web.1]:     from tsb import app
2015-12-29T21:30:37.938955+00:00 app[web.1]:   File "manage.py", line 7, in <module>
2015-12-29T21:30:37.939002+00:00 app[web.1]: ImportError: No module named tsb

这里指的是manage.py代码的这一部分:

from tsb import app

“tsb”是存放我所有项目文件的文件夹,它是项目文件夹。这个怎么不能导入?

【问题讨论】:

    标签: python heroku flask cloud9-ide


    【解决方案1】:

    您没有正确使用 gunicorn。 basic usage

    $ gunicorn [OPTIONS] APP_MODULE
    

    这是你需要在Procfile中使用的。

    web: gunicorn [OPTIONS] APP_MODULE
    

    我不能告诉你使用什么选项。您可以在Heroku's gunicorn documentation 中找到它。这里重要的是APP_MODULE

    看起来您的应用程序实例正在通过manage.py 公开,所以您想使用

    web: gunicorn manage
    

    但是,如果您尝试这样做,它可能会失败。默认情况下,gunicorn 将在 APP_MODULE 中查找名为 application 的内容。您的应用程序似乎被命名为manager。这意味着你需要

    web: gunicorn manage:manager
    

    【讨论】:

    • 我想我在没有使用 gunicorn 的情况下解决了它,但现在我遇到了一个新错误。我编辑了我原来的问题。
    • gunicorn 不是你的问题。另外,您不应该在生产中使用开发服务器。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2018-11-11
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多