python – GEvent PyWSGI SSL非常慢

我正在使用带有SSL的gevent.pywsgi服务器,当使用IE或Chrome时,流量大小介于内容大小的10倍到100倍之间,传输速度非常非常慢.
Firefox虽然可以.如果我使用stunnel代替提供SSL(具有相同的证书),一切正常.

我在这里做了一个孤立的测试用例:http://dl.dropbox.com/u/7138409/Chrome-Test.zip

发生在Python 2.6和2.7以及不同的gevent版本上.

解决方法:

这个错误的愚蠢是压倒性的.
首先,我使用Wireshark解析了流,令我惊讶的是,我已经看到响应的每个字节都在其自己的SSL段中传输.
问题转向了我从WSGI处理程序返回原始字节串,而正确的方法是将它们包含在列表中!

这是一个工作示例:

import gevent
import gevent.pywsgi


ssl = {
    'certfile':  'ajenti.crt',
    'keyfile': 'ajenti.key',
    'ciphers': 'RC4',
}

def dispatch(env, s_r):
    s_r('200 OK', [('Content-Type', 'text/plain')])
    s = 'a' * 1000
    return [s]

server = gevent.pywsgi.WSGIServer(
    ('0.0.0.0', 8001),
    application=dispatch,
    **ssl
)

server.serve_forever()
上一篇:python – 为什么在使用Apache mod_wsgi的Flask应用程序上进行gevent会引发NotImplementedError?


下一篇:使用gevent包实现concurrent.futures.executor 相同的公有方法。组成鸭子类