google_credential.json
那么 用下面的语句可以在本地打开这个文件, 并将内容写入 heroku 的环境变量,当然你的环境变量名字 GS_CREDENTIALS
你自己指定heroku config:set GS_CREDENTIALS="$(< ./google_credential.json)" -a <app_name>
确保应用初始化顺序正确:在 INSTALLED_APPS
中,
应用应该在 "django.contrib.admin"
和其他内置应用之后列出。这可以帮助确保当您的自定义应用尝试访问模型或其他 Django 功能时,Django 已经完全初始化。
检查环境变量配置:确保所有在 Heroku 环境中所需的环境变量都已正确设置。这包括任何数据库 URL、密钥、或其他您的应用可能依赖的服务的凭证。
检查数据库配置:在 Heroku 上,通常会使用 Postgres
数据库而不是本地的 SQLite
。确保 DATABASES
配置适用于 Heroku 的数据库。例如,可以使用 dj_database_url.config()
来从 Heroku 的 DATABASE_URL
环境变量中获取数据库配置。
静态文件配置:在 Heroku 上部署时,静态文件的处理方式与本地开发不同。请确保whitenoise.middleware.WhiteNoiseMiddleware
在 settings
中部署正确,也确保静态文件路径和设置适合 Heroku 环境。
检查 ASGI/WSGI
配置:如果同时配置了 ASGI 和 WSGI。请确保在 Heroku 上也正确地配置了这些,特别是如果正在使用像 Daphne
这样的 ASGI 服务器。
检查 Procfile:确保您的 Procfile 正确设置以启动 Django 应用。例如,如果使用 ASGI
,则应该有类似 web: daphne
的内容。如果使用 docker 部署,则这一条可以忽略
运行迁移:在部署到 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]: cls().run(sys.argv[1:])
2024-01-30T04:57:33.755850+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/daphne/cli.py", line 232, in run
2024-01-30T04:57:33.755910+00:00 app[web.1]: application = import_by_path(args.application)
2024-01-30T04:57:33.755920+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/daphne/utils.py", line 12, in import_by_path
2024-01-30T04:57:33.755982+00:00 app[web.1]: target = importlib.import_module(module_path)
2024-01-30T04:57:33.755983+00:00 app[web.1]: File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
2024-01-30T04:57:33.756066+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2024-01-30T04:57:33.756067+00:00 app[web.1]: File "" , line 1030, in _gcd_import
2024-01-30T04:57:33.756172+00:00 app[web.1]: File "" , line 1007, in _find_and_load
2024-01-30T04:57:33.756202+00:00 app[web.1]: File "" , line 986, in _find_and_load_unlocked
2024-01-30T04:57:33.756231+00:00 app[web.1]: File "" , line 680, in _load_unlocked
2024-01-30T04:57:33.756261+00:00 app[web.1]: File "" , line 850, in exec_module
2024-01-30T04:57:33.756322+00:00 app[web.1]: File "" , line 228, in _call_with_frames_removed
2024-01-30T04:57:33.756351+00:00 app[web.1]: File "/app/./validation_backend/asgi.py", line 23, in <module>
2024-01-30T04:57:33.756423+00:00 app[web.1]: import validation_backend.routing
2024-01-30T04:57:33.756424+00:00 app[web.1]: File "/app/./validation_backend/routing.py", line 8, in <module>
2024-01-30T04:57:33.756520+00:00 app[web.1]: from . import consumers
2024-01-30T04:57:33.756520+00:00 app[web.1]: File "/app/./validation_backend/consumers.py", line 23, in <module>
2024-01-30T04:57:33.756622+00:00 app[web.1]: from validation_backend.models import Messages, Reminder
2024-01-30T04:57:33.756622+00:00 app[web.1]: File "/app/./validation_backend/models.py", line 18, in <module>
2024-01-30T04:57:33.756725+00:00 app[web.1]: class UserAction(models.Model):
2024-01-30T04:57:33.756725+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 108, in __new__
2024-01-30T04:57:33.756818+00:00 app[web.1]: app_config = apps.get_containing_app_config(module)
2024-01-30T04:57:33.756819+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 253, in get_containing_app_config
2024-01-30T04:57:33.756955+00:00 app[web.1]: self.check_apps_ready()
2024-01-30T04:57:33.756955+00:00 app[web.1]: File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 136, in check_apps_ready
2024-01-30T04:57:33.757016+00:00 app[web.1]: raise AppRegistryNotReady("Apps aren't loaded yet.")
2024-01-30T04:57:33.757042+00:00 app[web.1]: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
2024-01-30T04:57:33.951201+00:00 heroku[web.1]: State changed from starting to crashed
heroku config:set DJANGO_SETTINGS_MODULE=<your django app name>.settings