2010-01-27 2 views
4

비동기 요청을 처리하는 데 twisted web을 사용하고 일반적인 내용을 제공하는 Django를 사용하는 응용 프로그램을 작성하면서 두 제품 모두를 통해 동일한 twisted reactor에서 실행하는 것이 좋을 것이라고 생각했습니다. 장고의 WSGI 인터페이스.Twisted Web에서 Django 테스트 서버 실행

장고가 제공하는 멋진 테스트 서버 기능을 사용하여 앱을 테스트하고 싶었습니다. 처음에는 단순히 테스트 db를 생성하고 반응기 아래에서 WSGIHandler를 시작했지만 WSGIHandler는 초기화 중에 생성 된 테스트 db를 보지 못하기 때문에 작동하지 않았습니다.

따라서 필자는 작업을 작성하고 첫 번째 요청시 db 생성 및 픽스를로드하기로 결정했습니다. 이는 테스트 서버에 적합합니다. 난 당신이 여기로 신고 해 주시기 바랍니다 더 나은 솔루션을했습니다, 그래서 만약이 해킹의 조금 알고

import os, sys 
import django.core.handlers.wsgi 

from django.core.management import call_command 
from django.db import connection 

from twisted.web.wsgi import WSGIResource 
from twisted.internet import reactor 
from twisted.web.server import Site 

sys.path.append('/path/to/myapp') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings' 

_app = django.core.handlers.wsgi.WSGIHandler() 
initialized = False 
fixtures = (...) # Put your fixtures path here 

def app(e,sr): 
    global initialized 

    if not initialized: 
    connection.creation.create_test_db(verbosity=1) 
    call_command('loaddata', *fixtures, verbosity=1) 
    initialized = True 

    return _app(e,sr) 

res = WSGIResource(reactor, reactor.getThreadPool(), app) 
factory = Site(res) 
reactor.listenTCP(8888, factory) 

    reactor.run() 

: 여기 내가 사용하고있어 (벗었) 스크립트입니다.

감사합니다.

답변

2

정확할 수도 있습니다. http://github.com/clemesha/twisted-wsgi-django

+0

감사합니다. 나는 그것을 시도하지 않았지만, 테스트 모드에서 장고 사이트를 실행하는 문제를 해결하지 못한다고 생각한다. 아니면 그렇지? –