2016-01-17 1 views
7

J'ai joué avec un tuto de Django de Microsoft, qui a bien fonctionné dans mon environnement Visual Studio 2015 avec Python 3.4.3. Lorsque je tente de le lancer à travers mon serveur web, il échoue cependant:Django sur IIS: django.core.exceptions.AppRegistryNotReady: Les applications ne sont pas encore chargées

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: 

Lorsque je teste le code via « runserver manage.py » sur le serveur Web, il fonctionne parfaitement. Quelqu'un at-il des recommandations sur la façon de déboguer ce qui ne va pas, lors de l'exécution via IIS?

Le serveur exécute aussi Python 3.4.3, avec django, django-crispy-forms, wfastcgi et mysqlclient installés. Python est exécuté via FastCGI sur un serveur R2 de Windows 2012 avec IIS 8.5 - configuration a été effectuée à l'aide du guide à https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-python-django-web-app-windows-server/

J'ai essayé:

1) Ajouter ce qui suit sous "os env ..." dans mon manage.py:

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

2) Ajouter ce qui suit sous "os env ..." dans mon manage.py:

import django 
django.setup() 

Comme d'autres personnes ont mentionné ces solutions o ther threads, mais malheureusement sans chance. Je suis complètement nouveau à la fois Python/Django, donc je n'ai aucune idée sur la façon de procéder. Toute entrée serait très apprécié!

+0

J'ai eu un problème similaire une fois. C'était une mauvaise initialisation de l'application wsgi. L'appel a changé sur les versions de Django et le tutoriel pourrait ne pas couvrir le vôtre. –

Répondre

13

Il s'avère que le guide Microsoft lié est obsolète.

En web.config, les besoins suivants à remplacer:

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

avec:

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

et il fonctionnera :-)

+1

Pour ce que ça vaut ... Merci. Vous avez sauvegardé mon projet après 48 heures d'essais et d'erreurs insensés. –