我正在使用带有 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 - GEvent PyWSGI SSL 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187548/