Как улучшить производительность комбинации жевента и торнадо?

Я пытаюсь использовать gevent в качестве wsgi-сервера и использовать торнадо WSGIApplication для обработки запросов. Вот код

#!/usr/bin/env python
# coding=utf-8

import gevent
from gevent import monkey
monkey.patch_all(thread=False)

from gevent.pywsgi import WSGIServer

from tornado.wsgi import WSGIApplication
import tornado.web
import tornado.wsgi

import requests

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        requests.get('http://google.com')
        self.write('hello')


handlers = [
    (r'/', MainHandler)
]


if __name__ == '__main__':
    application = WSGIApplication(handlers)
    server = WSGIServer(('', 9010), application)
    server.serve_forever()

И я использую Apache Benchmark для тестирования производительности. Тестовая команда

ab -n 1000 -c 100 http://127.0.0.1:9010/

Это приводит к 100req в секунду, это слишком медленно. В приведенном выше коде я просто поместил http-запрос на другую сторону, я думаю, что в этом случае gevent переключится на другой greenlet, когда блокируется, и это должно иметь небольшое влияние на производительность, но производительность gevent снизится с 1600req в секунду до 100 Требуется в секунду, я не могу понять, почему.

Кто-нибудь может объяснить это?

Ответы на вопрос(4)

Ваш ответ на вопрос