python – 在扭曲的web下运行Django测试服务器

当我正在编写一个使用扭曲的web来提供异步请求的应用程序和用于正常内容交付的Django的应用程序时,我认为通过Django的WSGI接口在相同的扭曲反应器下运行会很不错.

我还想使用Django提供的漂亮的测试服务器工具来测试我的应用程序.起初我只是简单地创建了测试数据库并在反应堆下触发了WSGIHandler,但这并不起作用,因为WSGIHandler没有看到初始化期间创建的测试数据库.

因此,我决定编写一个解决方案并在第一个请求中加载db并加载fixture,这对于测试服务器来说很好.这是我正在使用的(精简版)脚本:

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()

我知道这有点像黑客,所以如果你有更好的解决方案,请在这里报告.

谢谢.

最佳答案 这可能正是您所寻找的:
http://github.com/clemesha/twisted-wsgi-django

点赞