如何解决使用 Flask 在 Heroku 上部署模型后导致的应用程序错误?

2023-11-30

该应用程序在本地计算机上完美运行,但部署到 Heroku 后,当我尝试在浏览器中打开该应用程序时,出现应用程序错误。检查日志文件并自己解决了一些小问题,但我现在无法进一步进行。我在部署之前做了什么:

  1. 点安装gunicorn
  2. pip freeze > 要求.txt
  3. 创建了 procfile 并在里面写了 web:gunicorn app:app
  4. 登录
  5. git init
  6. heroku git:remote -a 我的应用程序
  7. git 添加 .
  8. git commit -am“1”
  9. git推送heroku大师

2020-10-30T21:02:37.970885+00:00 app[web.1]: worker.init_process()
2020-10-30T21:02:37.970885+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-10-30T21:02:37.970886+00:00 app[web.1]: self.load_wsgi()
2020-10-30T21:02:37.970886+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-10-30T21:02:37.970886+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-10-30T21:02:37.970888+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-10-30T21:02:37.970888+00:00 app[web.1]: self.callable = self.load()
2020-10-30T21:02:37.970888+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-10-30T21:02:37.970888+00:00 app[web.1]: return self.load_wsgiapp()
2020-10-30T21:02:37.970889+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-10-30T21:02:37.970889+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-10-30T21:02:37.970890+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-10-30T21:02:37.970890+00:00 app[web.1]: mod = importlib.import_module(module)
2020-10-30T21:02:37.970890+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-10-30T21:02:37.970891+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-10-30T21:02:37.970892+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-10-30T21:02:37.970892+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-10-30T21:02:37.970892+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-10-30T21:02:37.970893+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-10-30T21:02:37.970893+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-10-30T21:02:37.970893+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-10-30T21:02:37.970894+00:00 app[web.1]: File "/app/app.py", line 2, in <module>
2020-10-30T21:02:37.970894+00:00 app[web.1]: from main import views
2020-10-30T21:02:37.970894+00:00 app[web.1]: File "/app/main/views.py", line 5, in <module>
2020-10-30T21:02:37.970895+00:00 app[web.1]: from main.utils import pipeline_model
2020-10-30T21:02:37.970895+00:00 app[web.1]: File "/app/main/utils.py", line 6, in <module>
2020-10-30T21:02:37.970896+00:00 app[web.1]: import cv2
2020-10-30T21:02:37.970897+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/cv2/__init__.py", line 5, in <module>
2020-10-30T21:02:37.970897+00:00 app[web.1]: from .cv2 import *
2020-10-30T21:02:37.970905+00:00 app[web.1]: ImportError: libGL.so.1: cannot open shared object file: No such file or directory
2020-10-30T21:02:37.973156+00:00 app[web.1]: [2020-10-30 21:02:37 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-10-30T21:02:38.493246+00:00 app[web.1]: [2020-10-30 21:02:38 +0000] [11] [ERROR] Exception in worker process
2020-10-30T21:02:38.493257+00:00 app[web.1]: Traceback (most recent call last):
2020-10-30T21:02:38.493259+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-10-30T21:02:38.493259+00:00 app[web.1]: worker.init_process()
2020-10-30T21:02:38.493260+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-10-30T21:02:38.493260+00:00 app[web.1]: self.load_wsgi()
2020-10-30T21:02:38.493261+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-10-30T21:02:38.493261+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-10-30T21:02:38.493262+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-10-30T21:02:38.493262+00:00 app[web.1]: self.callable = self.load()
2020-10-30T21:02:38.493263+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-10-30T21:02:38.493263+00:00 app[web.1]: return self.load_wsgiapp()
2020-10-30T21:02:38.493263+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-10-30T21:02:38.493264+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-10-30T21:02:38.493264+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-10-30T21:02:38.493264+00:00 app[web.1]: mod = importlib.import_module(module)
2020-10-30T21:02:38.493265+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-10-30T21:02:38.493265+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-10-30T21:02:38.493266+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-10-30T21:02:38.493267+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-10-30T21:02:38.493267+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-10-30T21:02:38.493267+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-10-30T21:02:38.493268+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-10-30T21:02:38.493268+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-10-30T21:02:38.493269+00:00 app[web.1]: File "/app/app.py", line 2, in <module>
2020-10-30T21:02:38.493269+00:00 app[web.1]: from main import views
2020-10-30T21:02:38.493269+00:00 app[web.1]: File "/app/main/views.py", line 5, in <module>
2020-10-30T21:02:38.493270+00:00 app[web.1]: from main.utils import pipeline_model
2020-10-30T21:02:38.493270+00:00 app[web.1]: File "/app/main/utils.py", line 6, in <module>
2020-10-30T21:02:38.493271+00:00 app[web.1]: import cv2
2020-10-30T21:02:38.493271+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/cv2/__init__.py", line 5, in <module>
2020-10-30T21:02:38.493272+00:00 app[web.1]: from .cv2 import *
2020-10-30T21:02:38.493280+00:00 app[web.1]: ImportError: libGL.so.1: cannot open shared object file: No such file or directory
2020-10-30T21:02:38.494646+00:00 app[web.1]: [2020-10-30 21:02:38 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-10-30T21:02:38.670078+00:00 app[web.1]: Traceback (most recent call last):
2020-10-30T21:02:38.670085+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 209, in run
2020-10-30T21:02:38.670559+00:00 app[web.1]: self.sleep()
2020-10-30T21:02:38.670617+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 357, in sleep
2020-10-30T21:02:38.671121+00:00 app[web.1]: ready = select.select([self.PIPE[0]], [], [], 1.0)
2020-10-30T21:02:38.671176+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
2020-10-30T21:02:38.671571+00:00 app[web.1]: self.reap_workers()
2020-10-30T21:02:38.671632+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2020-10-30T21:02:38.672179+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2020-10-30T21:02:38.672283+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2020-10-30T21:02:38.672324+00:00 app[web.1]:
2020-10-30T21:02:38.672325+00:00 app[web.1]: During handling of the above exception, another exception occurred:
2020-10-30T21:02:38.672325+00:00 app[web.1]:
2020-10-30T21:02:38.672407+00:00 app[web.1]: Traceback (most recent call last):
2020-10-30T21:02:38.672450+00:00 app[web.1]: File "/app/.heroku/python/bin/gunicorn", line 8, in <module>
2020-10-30T21:02:38.672772+00:00 app[web.1]: sys.exit(run())
2020-10-30T21:02:38.672828+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 58, in run
2020-10-30T21:02:38.673110+00:00 app[web.1]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
2020-10-30T21:02:38.673183+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 228, in run
2020-10-30T21:02:38.673593+00:00 app[web.1]: super().run()
2020-10-30T21:02:38.673651+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 72, in run
2020-10-30T21:02:38.673950+00:00 app[web.1]: Arbiter(self).run()
2020-10-30T21:02:38.674006+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 229, in run
2020-10-30T21:02:38.674395+00:00 app[web.1]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
2020-10-30T21:02:38.674451+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 342, in halt
2020-10-30T21:02:38.674927+00:00 app[web.1]: self.stop()
2020-10-30T21:02:38.674986+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 393, in stop
2020-10-30T21:02:38.675477+00:00 app[web.1]: time.sleep(0.1)
2020-10-30T21:02:38.675534+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
2020-10-30T21:02:38.675933+00:00 app[web.1]: self.reap_workers()
2020-10-30T21:02:38.675990+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2020-10-30T21:02:38.676549+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2020-10-30T21:02:38.676613+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2020-10-30T21:02:38.760092+00:00 heroku[web.1]: Process exited with status 1
2020-10-30T21:02:38.805325+00:00 heroku[web.1]: State changed from up to crashed
2020-10-30T21:03:14.847423+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=face-1907.herokuapp.com request_id=9cc9542b-0ea0-481c-b2bd-29b1cc407769 fwd="88.252.193.107" dyno= connect= service= status=503 bytes= protocol=https

似乎是cv2模块丢失。您可以利用以下功能安装这些缺失的库heroku-buildpack-apt.

在撰写本文时,我已经成功完成了对于这个回购协议, 主持here,执行以下步骤:

  1. 将 heroku-buildpack-apt 添加到 Heroku 平台上的构建包中
  2. 创建一个名为 Aptfile 的文件并添加以下库:libsm6、libxrender1、libfontconfig1、libice6(每行一个)。例子here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决使用 Flask 在 Heroku 上部署模型后导致的应用程序错误? 的相关文章

  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐