2016-01-17 26 views
7

Grałem z tutoriale Django od Microsoftu, który działał dobrze w moim środowisku Visual Studio 2015 z Python 3.4.3. Gdy próbuję uruchomić go przez mój serwer, to zawodzi jednak:Django na IIS: django.core.exceptions.AppRegistryNotReady: Aplikacje nie są jeszcze załadowane

Error occurred: 

Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\wfastcgi.py", line 805, in main 
    result = handler(record.params, response.start) 
    File "C:\Python34\lib\site-packages\django\core\handlers\wsgi.py", line 158, in __call__ 
    self.load_middleware() 
    File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 51, in load_middleware 
    mw_class = import_string(middleware_path) 
    File "C:\Python34\lib\site-packages\django\utils\module_loading.py", line 20, in import_string 
    module = import_module(module_path) 
    File "C:\Python34\lib\importlib\__init__.py", line 109, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1129, in _exec 
    File "<frozen importlib._bootstrap>", line 1471, in exec_module 
    File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
    File "C:\Python34\lib\site-packages\django\contrib\auth\middleware.py", line 3, in <module> 
    from django.contrib.auth.backends import RemoteUserBackend 
    File "C:\Python34\lib\site-packages\django\contrib\auth\backends.py", line 4, in <module> 
    from django.contrib.auth.models import Permission 
    File "C:\Python34\lib\site-packages\django\contrib\auth\models.py", line 4, in <module> 
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager 
    File "C:\Python34\lib\site-packages\django\contrib\auth\base_user.py", line 49, in <module> 
    class AbstractBaseUser(models.Model): 
    File "C:\Python34\lib\site-packages\django\db\models\base.py", line 94, in __new__ 
    app_config = apps.get_containing_app_config(module) 
    File "C:\Python34\lib\site-packages\django\apps\registry.py", line 239, in get_containing_app_config 
    self.check_apps_ready() 
    File "C:\Python34\lib\site-packages\django\apps\registry.py", line 124, in check_apps_ready 
    raise AppRegistryNotReady("Apps aren't loaded yet.") 
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 


StdOut: 

StdErr: 

kiedy przetestować kod via „manage.py runserver” na serwer, to działa doskonale. Czy ktoś ma jakieś zalecenia dotyczące debugowania, co dzieje się źle, podczas uruchamiania go za pośrednictwem IIS?

Na serwerze działa również Python 3.4.3 z zainstalowanymi django, django-crispy-forms, wfastcgi i mysqlclient. Python jest wykonywany poprzez FastCGI na serwerze Windows 2012 R2 z IIS 8.5 - konfiguracja została wykonana przy użyciu instrukcji na https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-python-django-web-app-windows-server/

Próbowałem:

1) dodanie po punkcie „os env ...” w moim manage.py:

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

2) Dodanie następujących sekcji "os env ..." w moim manage.py:

import django 
django.setup() 

Jak inni wspomniano te rozwiązania w O wątki, ale niestety bez powodzenia. Jestem całkowicie nowy w obu Pythonie/Django, więc nie mam pojęcia, jak postępować. Wszelkie dane wejściowe będą mile widziane!

+0

Miałem podobny problem raz. To była zła inicjalizacja aplikacji wsgi. Połączenie zmieniło się w wersjach Django i samouczek może nie pokryć twojego. –

Odpowiedz

13

Okazuje się, że połączony przewodnik Microsoft jest nieaktualny.

W web.config następujące należy wymienić:

<add key="WSGI_HANDLER" value="django.core.handlers.wsgi.WSGIHandler()" /> 

z:

<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> 

i to będzie działać :-)

+1

Za to, co jest warte ... Dziękuję. Zapisałeś mój projekt po 48 godzinach bezsensownych prób i błędów. –