为什么在将Flask部署到Heroku时应用程序崩溃?使用最新的Python 3.10和Heroku 22



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

应用程序崩溃H=10

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

  • 模板+
  • venv+
  • app.py
  • 仪表板.py
  • Procfile
  • .env
  • runtime.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 Path时遇到问题(。

感谢您的帮助!

谢谢。

Judy

最后,我能够部署它。如果你有同样的问题,只需在这里按照这个极客解决方案中的相同顺序:

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

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

最新更新