过去几天我一直在试着部署但就是没能成功在heroku上,它说应用程序已部署,但当我进入日志时,我看到了错误。我尝试打开应用程序(例如,管理页面),我得到了应用程序错误。我尝试在导入任何其他内容之前调用get_asgi_application,但没有工作。以下是我收到的错误:错误
File "/app/.heroku/python/lib/python3.9/site-packages/django/apps/registry.py", line 136, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
Process exited with status 1
State changed from starting to crashed
at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=myappname.herokuapp.com request_id=18f76666-adff-40f8-83ae-55df56d78208 fwd="24.150.189.187" dyno= connect= service= status=503 bytes= protocol=https
我的asgi文件:
import os
from django.core.asgi import get_asgi_application
import django
#from channels.auth import AuthMiddlewareStack
#from channels.security.websocket import AllowedHostsOriginValidator
from channels.routing import ProtocolTypeRouter, URLRouter
#from .settings import ALLOWED_HOSTS
from myappnameapp.routing import *
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myappname.settings')
django.setup()
#from django.urls import path
django_asgi_app = get_asgi_application()
from myappname.auth_middleware import TokenAuthMiddleware
application = ProtocolTypeRouter({
# (http->django views is added by default)
"http": django_asgi_app,
'websocket': TokenAuthMiddleware(
URLRouter(
websocket_urlpatterns
)
),
})
我的程序文件:
release: python manage.py migrate
web: daphne myappname.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker channel_layer -v2
设置文件:
import dj_database_url
from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1',
'myappname.herokuapp.com', 'localhost']
# Application definition
INSTALLED_APPS = [
'channels',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# 3rd party
'allauth',
'allauth.account',
'allauth.socialaccount',
'rest_framework',
'rest_framework.authtoken',
'dj_rest_auth',
'dj_rest_auth.registration',
'corsheaders',
'fcm_django',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.apple',
'django_celery_results',
'django_celery_beat',
'storages',
# local
'myappnameapi',
'accounts',
'myappnameapp',
]
from firebase_admin import initialize_app
FIREBASE_APP = initialize_app()
....
我试过添加. import django,然后调用django.setup()。然而同样的错误不断出现。任何帮助都将不胜感激
解决了!
根据Iain Shelvington在评论中的解决方案!!
1条答案
按热度按时间imzjd6km1#
尝试将行
chat.routing import *
放在对get_asgi_application()
的调用之后,您不需要调用django.setup()