Jak poprawić wydajność połączenia gevent i tornado?

Próbuję użyć gevent jako serwera wsgi i użyć tornado WSGIAplikacji do przetwarzania żądań. Oto kod

#!/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()

I używam testu apache do testowania wydajności. Polecenie testu to

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

To powoduje 100qq na sekundę, jest zbyt wolne. W powyższym kodzie po prostu wysyłam żądanie http na drugą stronę, myślę, że w tej sytuacji gevent przełączy się na inny greenlet, gdy blok, i powinien mieć niewielki wpływ na wydajność, ale spadek wydajności gevent z 1600req na sekundę do 100 req na sekundę, nie mogę zrozumieć dlaczego.

Czy ktoś mógłby to wyjaśnić?

questionAnswers(4)

yourAnswerToTheQuestion