我正在使用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 版本上。
我正在使用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 版本上。
这个错误的愚蠢是压倒性的。首先,我使用 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()