django heroku 部署问题汇总

文章讲述了如何解决在Django项目部署到Heroku时遇到的AppRegistryNotReady和ImproperlyConfigured错误,涉及环境变量配置、应用顺序、数据库设置、静态文件处理、ASGI/WSGI配置以及在consumers.py和models.py中的正确引用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境变量配置

  • 如果你有一个文件,比如我的是一个 google api 的鉴权文件 google_credential.json 那么 用下面的语句可以在本地打开这个文件, 并将内容写入 heroku 的环境变量,当然你的环境变量名字 GS_CREDENTIALS 你自己指定
heroku config:set GS_CREDENTIALS="$(< ./google_credential.json)" -a <app_name>

django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet.

  • 一些可能导致 AppRegistryNotReady 错误的常见问题需要检查:
  1. 确保应用初始化顺序正确:在 INSTALLED_APPS 中,<your application name> 应用应该在 "django.contrib.admin" 和其他内置应用之后列出。这可以帮助确保当您的自定义应用尝试访问模型或其他 Django 功能时,Django 已经完全初始化。

  2. 检查环境变量配置:确保所有在 Heroku 环境中所需的环境变量都已正确设置。这包括任何数据库 URL、密钥、或其他您的应用可能依赖的服务的凭证。

  3. 检查数据库配置:在 Heroku 上,通常会使用 Postgres 数据库而不是本地的 SQLite。确保 DATABASES 配置适用于 Heroku 的数据库。例如,可以使用 dj_database_url.config() 来从 Heroku 的 DATABASE_URL 环境变量中获取数据库配置。

  4. 静态文件配置:在 Heroku 上部署时,静态文件的处理方式与本地开发不同。请确保whitenoise.middleware.WhiteNoiseMiddlewaresettings 中部署正确,也确保静态文件路径和设置适合 Heroku 环境。

  5. 检查 ASGI/WSGI 配置:如果同时配置了 ASGI 和 WSGI。请确保在 Heroku 上也正确地配置了这些,特别是如果正在使用像 Daphne 这样的 ASGI 服务器。

  6. 检查 Procfile:确保您的 Procfile 正确设置以启动 Django 应用。例如,如果使用 ASGI,则应该有类似 web: daphne <your app name>.asgi:application --port $PORT --bind 0.0.0.0 的内容。如果使用 docker 部署,则这一条可以忽略

  7. 运行迁移:在部署到 Heroku 之前,确保已经运行了所有的数据库迁移。

  • 以上这些问题都没有解决,最后我通过查看项目的日志发现是我的 consumers.py 中定义了一些 websocket 功能,并且在构建 django 项目的时候, 在 consumers.py 中出现了循环调用,并且与 models.py 文件有关,于是,我将 consumers.py 中对于 models.py 文件中的引用放在了对应的函数中,即,不在批量 import 包的头部引入 models.py 的内容,而是啥时候用到啥时候调用,最终解决了这个问题。
2024-01-30T04:57:33.755630+00:00 app[web.1]: Traceback (most recent call last):
2024-01-30T04:57:33.755711+00:00 app[web.1]: File "/usr/local/bin/daphne", line 8, in <module>
2024-01-30T04:57:33.755764+00:00 app[web.1]: sys.exit(CommandLineInterface.entrypoint())
2024-01-30T04:57:33.755765+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/daphne/cli.py", line 170, in entrypoint
2024-01-30T04:57:33.755849+00:00 app[web.1]<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值