【问题标题】:Running a Django test server under twisted web在扭曲的网络下运行 Django 测试服务器
【发布时间】:2011-01-10 01:42:27
【问题描述】:

当我正在编写一个应用程序,它使用twisted web 来处理异步请求并使用Django 来提供正常的内容交付,我认为通过Django 的WSGI 接口在同一个twisted reactor 下运行会很好。

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

因此,我决定编写一个解决方法,并在第一个请求时创建数据库并加载固定装置,这对于测试服务器来说很好。这是我正在使用的(精简的)脚本:

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

我知道这有点小题大做,所以如果您有更好的解决方案,请在此处报告。

谢谢。

【问题讨论】:

    标签: python django integration twisted asynchronous


    【解决方案1】:

    这可能正是您正在寻找的:http://github.com/clemesha/twisted-wsgi-django

    【讨论】:

    • 感谢您的链接。我没有尝试过,但我认为它并没有解决在测试模式下运行django站点的问题。还是这样做的?
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多