我正在使用gevent.pywsgi
服务器和SSL,使用IE或Chrome时,流量大小介于内容大小的10倍到100倍之间,传输速度非常非常慢。
Firefox虽然可以。如果我使用stunnel
代替提供SSL(具有相同的证书),一切正常。
我在这里做了一个独立的测试用例:http://dl.dropbox.com/u/7138409/Chrome-Test.zip
发生在Python 2.6和2.7以及不同的gevent版本上。
答案 0 :(得分:3)
此错误的愚蠢是压倒性的。 首先,我使用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()