Использование WSGI на Twisted - PullRequest
1 голос
/ 18 февраля 2012

Могу ли я использовать Twisted и mod_wsgi вместе, чтобы попытаться повысить производительность?

Так как я не запускаю реактор.listenTCP (...), как я могу использовать асинхронные методы витой?:

Что я пробовал:

> server.wsgi

def application(environ, start_response):
    status = '200 OK'
    output = 'Pong!'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    # How do I call a twisted async method from here?!
    # like deferToThread(object.send, environ).
    return [output]

resource = WSGIResource(reactor, reactor.getThreadPool(), application)

1 Ответ

9 голосов
/ 18 февраля 2012

Вы не можете.

Если вы хотите использовать Twisted в качестве контейнера WSGI, используйте Twisted.Если вы хотите использовать Apache, используйте Apache.Однако, если вы используете Apache в качестве контейнера WSGI, вы не сможете использовать функции из Twisted, поскольку цикл событий Twisted не совместим с тем, как Apache выполняет сетевой ввод-вывод.делать в примере кода вдвойне бессмысленно, так как WSGIResource является связующим звеном между HTTP-сервером Twisted и WSGI;даже если бы вы могли каким-то образом встроить Twisted в работающий процесс Apache HTTPD через mod_wsgi, вам не понадобится WSGIResource, поскольку apache будет выполнять эту роль.

...