2017-06-20 4 views
0

J'ai nouveau projet Django sans juste application par défaut (par exemple admin)service Web Twisted projet Django

Mon plan est d'avoir chat vidéo et messagerie instantanée dans mon projet Django.

wsgi.py

import os, sys 
from django.core.wsgi import get_wsgi_application 

sys.path.append('MY_DJANGO_PROJECT_PATH') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MY_DJANGO_PROJECT.settings") 
application = get_wsgi_application() 

je lance mon serveur Web Twisted dans les MY_DJANGO_PROJECT_PATH et le démarrage du serveur sur le port 8080.

cd MY_DJANGO_PROJECT_PATH twistd -n web --wsgi=MY_DJANG_PROJECT

Quand je l'ouvre au navigateur (http://127.0.0.1:8080/), j'ai une erreur

erreur d'application WSGI

File "/Library/Python/2.7/site-packages/Twisted-15.5.0-py2.7-macosx-10.12-intel.egg/twisted/web/wsgi.py", line 315, in run appIterator = self.application(self.environ, self.startResponse) exceptions.TypeError: 'module' object is not callable

Est-ce que quelqu'un me aider? Merci d'avance.

+0

Pouvez-vous expliquer pourquoi vous voulez exécuter Django en utilisant le serveur Twisted? –

+0

Je voudrais utiliser Django pour l'authentification de mon application Twisted. –

Répondre

0

J'ai pu servir mon projet Django dans le Twisted en utilisant twisted.web.wsgi.WSGIResource.

Suivant l'exemple here.

my_django_project.tac

from twisted.web import server 
from twisted.web.wsgi import WSGIResource 
from twisted.python.threadpool import ThreadPool 
from twisted.internet import reactor 
from twisted.application import service, strports 

# Create and start a thread pool 
wsgiThreadPool = ThreadPool() 
wsgiThreadPool.start() 

# ensuring that it will be stopped when the reactor shuts down 
reactor.addSystemEventTrigger('after', 'shutdown', wsgiThreadPool.stop) 

import sys 
sys.path.append('MY_DJANGO_PROJECT_PATH') 
from MY_DJANGO_PROJECT import wsgi 

# Create the WSGI resource 
wsgiAppAsResource = WSGIResource(reactor, wsgiThreadPool, 
wsgi.application) 

# Hooks for twisted 
application = service.Application('My Django Project') 
server = strports.service('tcp:8080', server.Site(wsgiAppAsResource)) 
server.setServiceParent(application)