2016-01-29 2 views
4

Я пытаюсь запустить django 1.9 на движке Google. При попытке доступа к API через Google API Explorer появилась ошибка ниже.AppRegistryNotReady: Приложения еще не загружены. Django

Traceback (most recent call last): 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject 
    __import__(cumulative_path) 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/services.py", line 9, in <module> 
    from cityguide.api.internal.categories import Categories 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/internal/categories.py", line 10, in <module> 
    from cityguide.models import Category 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/models.py", line 8, in <module> 
    class ContactDetails(models.Model): 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/db/models/base.py", line 94, in __new__ 
    app_config = apps.get_containing_app_config(module) 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/apps/registry.py", line 239, in get_containing_app_config 
    self.check_apps_ready() 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/apps/registry.py", line 124, in check_apps_ready 
    raise AppRegistryNotReady("Apps aren't loaded yet.") 
AppRegistryNotReady: Apps aren't loaded yet. 

Я уже добавил

builtins: 
- deferred: on 
- remote_api: on 
- django_wsgi: on 

handlers: 
- url: .* 
    script: mysite.wsgi.application 

env_variables: 
    DJANGO_SETTINGS_MODULE: 'mysite.settings' 

внутри app.yaml файла.

wsgi.py выглядит

import os 

from django.core.wsgi import get_wsgi_application 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

application = get_wsgi_application() 

Я попытался, добавив django.setup() линию на верхней части models.py, но он показывает другую ошибку.

ERROR 2016-02-01 10:03:02,918 wsgi.py:263] 
Traceback (most recent call last): 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject 
    __import__(cumulative_path) 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/services.py", line 9, in <module> 
    from cityguide.api.internal.categories import Categories 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/internal/categories.py", line 10, in <module> 
    from cityguide.models import Category 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/models.py", line 6, in <module> 
    django.setup() 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/apps/registry.py", line 115, in populate 
    app_config.ready() 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/contrib/admin/apps.py", line 22, in ready 
    self.module.autodiscover() 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/contrib/admin/__init__.py", line 26, in autodiscover 
    autodiscover_modules('admin', register_to=site) 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/utils/module_loading.py", line 50, in autodiscover_modules 
    import_module('%s.%s' % (app_config.name, module_to_search)) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/admin.py", line 2, in <module> 
    from cityguide.models import Category 
ImportError: cannot import name Category 
ERROR 2016-02-01 10:03:02,919 wsgi.py:263] 
Traceback (most recent call last): 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject 
    __import__(cumulative_path) 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/services.py", line 9, in <module> 
    from cityguide.api.internal.categories import Categories 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/api/internal/categories.py", line 10, in <module> 
INFO  2016-02-01 10:03:03,000 module.py:794] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 500 - 
    from cityguide.models import Category 
INFO  2016-02-01 10:03:03,001 module.py:794] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 500 - 
    File "/home/gemini/projects/cityguide-backend/src/cityguide/models.py", line 6, in <module> 
INFO  2016-02-01 10:03:03,001 module.py:794] default: "GET /_ah/api/discovery/v1/apis HTTP/1.1" 500 60 
    django.setup() 
INFO  2016-02-01 10:03:03,001 module.py:794] default: "GET /_ah/api/discovery/v1/apis HTTP/1.1" 500 60 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/home/gemini/projects/cityguide-backend/src/lib/django/apps/registry.py", line 78, in populate 
    raise RuntimeError("populate() isn't reentrant") 
RuntimeError: populate() isn't reentrant 

Временное решение этой проблемы:

Кажется, что мне нужно, чтобы открыть домашнюю страницу первой. Чтобы он загружал db, так как я сделал главную страницу для возврата всего содержимого таблицы db. После того, как списки db показаны на главной странице, мы готовы вызвать API-интерфейс Google API.

Есть ли способ усовершенствовать это решение?

+0

сообщение об ошибке, как правило, означает, что 'приложения = get_wsgi_application() 'не запускается. Например, если вы импортируете модели django напрямую. Я думаю, что для подключения моделей python к базе данных требуется некоторый процесс настройки. –

+0

Я не уверен, что происходит на этом этапе «Файл» /home/gemini/softwares/google_appengine/google/appengine/runtime/wsgi.py », строка 96, в LoadObject __import __ (cumulative_path)', но это должно быть другой wsgi.py от того, который был создан в проекте django. Может быть, 'get_wsgi_application()' step не запущен. –

+0

@AvinashRaj Это работает, если вы попытаетесь запустить свой сайт с помощью 'manage.py runningerver Django'? – Louis

ответ

17

Вы должны сначала начать Джанго этот путь в скрипте:

import django 
django.setup() 

https://docs.djangoproject.com/en/1.9/ref/applications/#django.setup См

Вы также можете посмотреть на раздел Поиск и устранение неисправностей ссылку, чтобы увидеть другие возможности для решения этой aprticular исключение.

Добавляя выше двух линий в верхней части services.py файла решает эту проблему для меня ..

+0

Возможно, он должен быть добавлен в этот файл. '/ home/gemini/softwarewire/google_appengine/google/appengine/runtime/wsgi.py' –

+0

нет, это не работает. –

+0

@ HåkenLid PLS см. Мое обновление .. Я добавил временное решение. –

0

В вашем сценарии инициации Джанго как:

from django_root_app.wsgi import application 
Смежные вопросы