python - GEvent PyWSGI SSL 非常慢

标签 python ssl gevent

我正在使用带有 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/

相关文章:

python - 向后移植函数修饰符到 python2.1

python - Airflow SSH 运算符(operator)错误,意外的关键字参数

python 可执行文件警报防病毒

ssl - 没有默认本地主机证书的 wso2 AS SSL 错误

python - cherrypy 作为 gevent-socketio 服务器

python - 在Python中写入文件时如何打印 "dots"(或其他类型的反馈)?

ssl - Kafka SSL 握手失败问题

java - 使用 tomcat 7 从项目中删除 SSL 证书

python - Gevent猴子取消补丁

python - 由于 session ,使用 gevent-socketio 的多个工作人员因 xhr-polling 传输而失败