【问题标题】:Why app crashes when deploying Flask to Heroku ? using latest Python 3.10 and Heroku 22为什么将 Flask 部署到 Heroku 时应用程序崩溃?使用最新的 Python 3.10 和 Heroku 22
【发布时间】:2022-10-23 17:16:06
【问题描述】:

几天来,我一直在尝试将 Flask 应用程序部署到 Heroku,我尝试了其他有类似问题但仍未部署的人的所有解决方案,我收到了错误消息:

应用崩溃 H=10

首先,这是我的应用程序的结构:

  • 模板
  • venv+
  • app.py
  • 仪表板.py
  • Procfile
  • .env
  • 运行时.txt
  • requirements.txt
  • wsgi.py
  • (2 个 .CSV 文件)

这是Procfile:

web: gunicorn app:app

这是运行时:

python-3.10.8

这是 .env (所以它适用于生产):

FLASK_ENV=development

这是推送到 Heroku 后的日志:

2022-10-22T18:05:49.580801+00:00 heroku[web.1]: Starting process with command `gunicorn app:app`
2022-10-22T18:05:51.157439+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [4] [INFO] Starting gunicorn 19.9.0
2022-10-22T18:05:51.157882+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [4] [INFO] Listening at: http://0.0.0.0:43270 (4)
2022-10-22T18:05:51.157937+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [4] [INFO] Using worker: sync
2022-10-22T18:05:51.159962+00:00 app[web.1]: /app/.heroku/python/lib/python3.10/os.py:1030: RuntimeWarning: line buffering (buffering=1) isn't supported 
in binary mode, the default buffer size will be used
2022-10-22T18:05:51.159962+00:00 app[web.1]: return io.open(fd, mode, buffering, encoding, *args, **kwargs)
2022-10-22T18:05:51.163061+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [9] [INFO] Booting worker with pid: 9
2022-10-22T18:05:51.207728+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [9] [ERROR] Exception in worker process
2022-10-22T18:05:51.207730+00:00 app[web.1]: Traceback (most recent call last):
2022-10-22T18:05:51.207741+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker      
2022-10-22T18:05:51.207741+00:00 app[web.1]: worker.init_process()
2022-10-22T18:05:51.207742+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 129, in init_process 
2022-10-22T18:05:51.207742+00:00 app[web.1]: self.load_wsgi()
2022-10-22T18:05:51.207742+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi    
2022-10-22T18:05:51.207743+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2022-10-22T18:05:51.207743+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
2022-10-22T18:05:51.207743+00:00 app[web.1]: self.callable = self.load()
2022-10-22T18:05:51.207743+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2022-10-22T18:05:51.207744+00:00 app[web.1]: return self.load_wsgiapp()
2022-10-22T18:05:51.207744+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp   
2022-10-22T18:05:51.207744+00:00 app[web.1]: return util.import_app(self.app_uri)
2022-10-22T18:05:51.207745+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/util.py", line 350, in import_app
2022-10-22T18:05:51.207745+00:00 app[web.1]: __import__(module)
2022-10-22T18:05:51.207745+00:00 app[web.1]: File "/app/app.py", line 2, in <module>
2022-10-22T18:05:51.207746+00:00 app[web.1]: from flask import Flask, request, render_template
2022-10-22T18:05:51.207746+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/flask/__init__.py", line 14, in <module>
2022-10-22T18:05:51.207746+00:00 app[web.1]: from jinja2 import escape
2022-10-22T18:05:51.207747+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/__init__.py", line 33, in <module>
2022-10-22T18:05:51.207747+00:00 app[web.1]: from jinja2.environment import Environment, Template
2022-10-22T18:05:51.207747+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/environment.py", line 16, in <module>
2022-10-22T18:05:51.207747+00:00 app[web.1]: from jinja2.defaults import BLOCK_START_STRING, \
2022-10-22T18:05:51.207748+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/defaults.py", line 32, in <module>
2022-10-22T18:05:51.207748+00:00 app[web.1]: from jinja2.tests import TESTS as DEFAULT_TESTS
2022-10-22T18:05:51.207748+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/tests.py", line 13, in <module>
2022-10-22T18:05:51.207749+00:00 app[web.1]: from collections import Mapping
2022-10-22T18:05:51.207749+00:00 app[web.1]: ImportError: cannot import name 'Mapping' from 'collections' (/app/.heroku/python/lib/python3.10/collections/__init__.py)
2022-10-22T18:05:51.207808+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [9] [INFO] Worker exiting (pid: 9)
2022-10-22T18:05:51.223364+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [10] [INFO] Booting worker with pid: 10
2022-10-22T18:05:51.242648+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [10] [ERROR] Exception in worker process
2022-10-22T18:05:51.242650+00:00 app[web.1]: Traceback (most recent call last):
2022-10-22T18:05:51.242651+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker      
2022-10-22T18:05:51.242651+00:00 app[web.1]: worker.init_process()
2022-10-22T18:05:51.242651+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 129, in init_process
2022-10-22T18:05:51.242652+00:00 app[web.1]: self.load_wsgi()
2022-10-22T18:05:51.242652+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2022-10-22T18:05:51.242652+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2022-10-22T18:05:51.242653+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
2022-10-22T18:05:51.242653+00:00 app[web.1]: self.callable = self.load()
2022-10-22T18:05:51.242653+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2022-10-22T18:05:51.242654+00:00 app[web.1]: return self.load_wsgiapp()
2022-10-22T18:05:51.242654+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2022-10-22T18:05:51.242654+00:00 app[web.1]: return util.import_app(self.app_uri)
2022-10-22T18:05:51.242655+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/gunicorn/util.py", line 350, in import_app
2022-10-22T18:05:51.242655+00:00 app[web.1]: __import__(module)
2022-10-22T18:05:51.242655+00:00 app[web.1]: File "/app/app.py", line 2, in <module>
2022-10-22T18:05:51.242655+00:00 app[web.1]: from flask import Flask, request, render_template
2022-10-22T18:05:51.242656+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/flask/__init__.py", line 14, in <module>
2022-10-22T18:05:51.242656+00:00 app[web.1]: from jinja2 import escape
2022-10-22T18:05:51.242656+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/__init__.py", line 33, in <module>
2022-10-22T18:05:51.242656+00:00 app[web.1]: from jinja2.environment import Environment, Template
2022-10-22T18:05:51.242657+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/environment.py", line 16, in <module>
2022-10-22T18:05:51.242657+00:00 app[web.1]: from jinja2.defaults import BLOCK_START_STRING, \
2022-10-22T18:05:51.242657+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/defaults.py", line 32, in <module>
2022-10-22T18:05:51.242657+00:00 app[web.1]: from jinja2.tests import TESTS as DEFAULT_TESTS
2022-10-22T18:05:51.242658+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.10/site-packages/jinja2/tests.py", line 13, in <module>
2022-10-22T18:05:51.242658+00:00 app[web.1]: from collections import Mapping
2022-10-22T18:05:51.242659+00:00 app[web.1]: ImportError: cannot import name 'Mapping' from 'collections' (/app/.heroku/python/lib/python3.10/collections/__init__.py)
2022-10-22T18:05:51.242756+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [10] [INFO] Worker exiting (pid: 10)
2022-10-22T18:05:51.354815+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [4] [INFO] Shutting down: Master
2022-10-22T18:05:51.354863+00:00 app[web.1]: [2022-10-22 18:05:51 +0000] [4] [INFO] Reason: Worker failed to boot.
2022-10-22T18:05:51.559228+00:00 heroku[web.1]: Process exited with status 3
2022-10-22T18:05:51.874981+00:00 heroku[web.1]: State changed from starting to crashed
2022-10-22T18:06:01.000000+00:00 app[api]: Build succeeded
2022-10-22T18:07:44.455982+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=recommendation-system-courses.herokuapp.com request_id=1038980b-cb76-4c76-83b5-ba47a511e203 fwd="37.245.139.13" dyno= connect= service= status=503 bytes= protocol=https
2022-10-22T18:07:45.848172+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=recommendation-system-courses.herokuapp.com request_id=f4d3fe09-f9a0-4bce-ae1f-7e717d708734 fwd="37.245.139.13" dyno= connect= service= status=503 bytes= protocol=https

我收到“应用程序崩溃”错误。

另外,我只想提一下,我之前在 C:\ 中安装了 Python 10,但我卸载并尝试使用 Python 9 删除与集合和映射相关的错误,但 Heroku 22 不支持它。所以我不得不再次安装 Python 10,但它安装在不同的路径中。(我在将虚拟环境定位到新的 Python 10 路径时遇到问题)。

任何帮助表示赞赏!

谢谢。

朱迪

【问题讨论】:

    标签: python jinja2


    【解决方案1】:

    最后,我能够部署它。如果您有同样的问题,只需在此 geek-of-geeks 解决方案中遵循相同的顺序:

    https://www.geeksforgeeks.org/deploy-python-flask-app-on-heroku/

    此外,检查最新版本是否在 Heroku 中被接受并且没有冲突的依赖项非常重要。

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 1970-01-01
      • 2017-07-01
      • 2018-02-11
      • 1970-01-01
      • 2012-11-22
      • 2020-11-08
      • 1970-01-01
      相关资源
      最近更新 更多