Flask 应用部署到 Heroku 卡在重启循环中

2 投票
1 回答
1025 浏览
提问于 2025-04-18 13:06

我有一个简单的Flask应用程序,想把它部署到Heroku上,但遇到了应用错误,日志显示应用似乎陷入了某种重启循环。我觉得可能是我的Procfile或run.py出了问题,但我搞不清楚具体是什么。

这是我的Heroku日志:

2014-07-13T03:02:24.579923+00:00 app[web.1]:  * Running on http://127.0.0.1:5000/
2014-07-13T03:02:24.580216+00:00 app[web.1]:  * Restarting with reloader
2014-07-13T03:02:29.941158+00:00 app[web.1]: /app/app/mechanize_boilerplate.py:13: UserWarning: gzip transfer encoding is experimental!
2014-07-13T03:02:29.941168+00:00 app[web.1]:   br.set_handle_gzip(True)
2014-07-13T03:02:29.955461+00:00 app[web.1]:  * Running on http://127.0.0.1:5000/
2014-07-13T03:02:29.955738+00:00 app[web.1]:  * Restarting with reloader
2014-07-13T03:02:35.300236+00:00 app[web.1]:   br.set_handle_gzip(True)
2014-07-13T03:02:35.300231+00:00 app[web.1]: /app/app/mechanize_boilerplate.py:13: UserWarning: gzip transfer encoding is experimental!
2014-07-13T03:02:35.314821+00:00 app[web.1]:  * Running on http://127.0.0.1:5000/
2014-07-13T03:02:35.315107+00:00 app[web.1]:  * Restarting with reloader
...

这是我当前的项目结构:

/myapplication
    Procfile
    run.py
    requirements.txt
    /app
        __init__.py
        views.py
        mechanize_boilerplate.py
        /static
        /templates

这是我的Procfile

web: gunicorn run:app

这是run.py

#!flask/bin/python
from app import app
app.run(debug = True)

这是init.py

from flask import Flask

app = Flask(__name__)
from app import views

接下来是views.py,运行起来很正常。

我看到了一些类似的 问题,也尝试调整我的Procfile,但没能成功,最后只把应用搞崩了。

有什么建议吗?

1 个回答

2

问题在于你的 run.py 文件在 gunicorn 导入它的时候就会运行你的应用。你其实只想在你手动执行这个文件的时候才让它运行。

#!flask/bin/python
from app import app
if __name__ == '__main__':
    app.run(debug = True)

撰写回答