当我当时在 Heroku 中部署 django 应用程序时,出现“Compiled Slug Size is too Large”错误
Posted
技术标签:
【中文标题】当我当时在 Heroku 中部署 django 应用程序时,出现“Compiled Slug Size is too Large”错误【英文标题】:When I Deployed django app in Heroku at that time "Compiled Slug Size is too Large" error occurred 【发布时间】:2021-07-01 04:21:44 【问题描述】:我按照article 中提到的确切步骤,将我的 django 项目部署到 heroku。
但是,对于git push heroku master
,我收到以下错误:
git push heroku master
请任何人告诉我可能是什么问题。
仅供参考:
我的项目根目录中有Procfile
、requirements.txt
、runtime.txt
。我也确信我的凭据是正确的。另外,我之前没有推送任何东西来掌握,我是这个应用程序的唯一所有者。
我的runtime.txt
有代码:python:3.7.9。
我的Procfile
有代码:web: gunicorn cardamage.wsgi --log-file -
我的requirements.txt:
absl-py==0.12.0
astunparse==1.6.3
cachetools==4.2.1
certifi==2020.12.5
chardet==4.0.0
cycler==0.10.0
dj-database-url==0.5.0
Django==1.10
django-heroku==0.3.1
gast==0.3.3
google-auth==1.28.0
google-auth-oauthlib==0.4.4
google-pasta==0.2.0
grpcio==1.36.1
gunicorn==20.1.0
h5py==2.10.0
idna==2.10
importlib-metadata==3.10.0
joblib==1.0.1
Keras==2.4.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
kiwisolver==1.3.1
Markdown==3.3.4
matplotlib==3.4.1
numpy==1.20.2
oauthlib==3.1.0
opt-einsum==3.3.0
pandas==1.1.5
pickle5==0.0.11
Pillow==8.2.0
protobuf==3.15.7
psycopg2==2.8.6
pyasn1==0.4.8
pyasn1-modules==0.2.8
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2021.1
PyYAML==5.4.1
requests==2.25.1
requests-oauthlib==1.3.0
rsa==4.7.2
scikit-learn==0.24.1
scipy==1.4.1
seaborn==0.11.1
six==1.15.0
tensorboard==2.2.2
tensorboard-plugin-wit==1.8.0
tensorflow==2.2.0
tensorflow-estimator==2.2.0
termcolor==1.1.0
threadpoolctl==2.1.0
typing-extensions==3.7.4.3
urllib3==1.26.4
Werkzeug==1.0.1
whitenoise==5.2.0
wrapt==1.12.1
zipp==3.4.1
【问题讨论】:
嗨,Riya,欢迎来到 ***,PS:我也有同样的问题。我认为是因为带有用户名和密码的新 git 请不要添加文字图片 - 只需将文字直接放在问题中即可。 【参考方案1】:heroku 中允许的最大 slug 大小(压缩后)为 500 MB。您编译的 slug-size
太大,因为您使用了 Tensorflow
模块。
Tensorflow
模块非常大(超过 500MB,Heroku 的限制),因为它支持 GPU。由于 Heroku 不支持 GPU,因此安装支持 GPU 的模块是没有意义的。
pip install tensorflow-cpu
只需在 requirements.py 中将 tensorflow
替换为 tensorflow-cpu
。
-------- 或 --------
只需将您的 TensorFlow
版本替换为 2.0.0 即可:
张量流==2.0.0
它的文件重量要轻得多,并且适合您的内存限制。此外,您可以使用 1.7.0 或 1.5.0 版本。
更新:
您可以尝试通过多种方式减小蛞蝓大小。最简单的方法是将.slugignore
文件添加到您的应用程序中,以告诉 slug 编译器忽略您应用程序中的任何不必要的文件,例如静态资源。
要确定 files/folders
占用了 slug 中的空间,您可以像这样启动一次性测功机来检查 slug:
heroku run bash -a <appname>
在 dyno 中,您可以使用 du -ha --max-depth 1 /app | sort -hr
命令显示当前目录中的文件和文件夹,按大小排序:
例如。
~ $ du -ha --max-depth 1 /app | sort -hr
108M /app
99M /app/vendor
8.1M /app/.heroku
448K /app/lib
292K /app/spec
8.0K /app/Gemfile.lock
4.0K /app/Procfile
4.0K /app/Gemfile
这有助于确定大文件的位置。
您可能还会发现clearing the build cache 有助于减小 slug 的大小。
在您的情况下,您使用了tensorflow
、scikit-learn
、Keras
等。所有库都非常大。所以AWS 是您的最佳解决方案。
【讨论】:
感谢您的回复!我试过了,但是蛞蝓尺寸还是太大了。我想我将不得不 dockerize 和部署它,或者寻找其他一些云平台来部署。 @Riya 是的 dockerize 是最佳选择或 AWS 平台。查看我的更新答案。以上是关于当我当时在 Heroku 中部署 django 应用程序时,出现“Compiled Slug Size is too Large”错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Heroku 服务器上部署 Django 错误 (500) - 据说是静态文件问题
Heroku:Django Migration 版本未在部署中运行
当我将django应用程序部署到heroku时,该站点停止工作