wsgi в режиме многозадачности

#python #multiprocessing #wsgi

#python #многопроцессорная обработка #wsgi

Вопрос:

все. У меня есть простой сервер wsgi и простое приложение wsgi.

 **The application**

def app(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ['Hello here']


**The server**

from wsgiref import simple_server
server = simple_server.WSGIServer(
        ('', 8080),
        simple_server.WSGIRequestHandler,
    )
server.set_app(app)
server.serve_forever()
  

Есть ли какой-либо способ обработать любой запрос пользователя в отдельном процессе или, возможно, потоке (т. Е. Выполнить Код приложения) без использования внешней среды? В процессе или потоке не ожидается общих данных. Если это невозможно, какой способ вы можете посоветовать?

Комментарии:

1. Решил использовать сервер gevent.

Ответ №1:

Вы можете использовать ThreadingMixIn или ForkingMixIn из модуля SocketServer, подобного этому:

 from wsgiref import simple_server
from SocketServer import ThreadingMixIn

class ThreadingWSGIServer (ThreadingMixIn, simple_server.WSGIServer): pass

server = ThreadingWSGIServer(...)
server.set_app(app)
server.serve_forever()
  

Однако ForkingMixIn не будет работать в Windows.

Замените ‘SocketServer’ на ‘socketserver’, если вы используете Python 3.

Комментарии:

1. Спасибо, но теперь это хуже (медленнее (меньше запросов в секунду)).