我在HTTPS模式下设置Sentry服务器时遇到问题。偶尔经常看似随机,这个错误消息由Raven(Sentry客户端)写入日志文件中:
Unable to reach Sentry log server: <urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol> (url: https://$(valid_server)/)
Web UI工作正常。来自Raven的大部分消息都被很好地接收,Sentry将它们处理成可用的输出。但是,由于这些错误,某些东西会不时丢失。
我试图想出这个,但死胡同似乎跟着另一个。基本上它看起来很像这样:
但是当使用TLS 1.2测试具有类似s_client查询的Sentry服务器时,它会导致一个有效的会话,与那里的示例不同。
由于没有使用SNI,所以也不是这样:
python-requests 2.0.0 - [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
我无法连贯地重现错误。 Raven的测试通过,没有任何严重错误,直到日志中弹出错误。
我的设置是:Python 2.7.5中的Raven 4.2.1,处理HTTPS的反向代理Nginx 1.6.0,以及默认的Gunicorn 0.17.4的Sentry 6.4.4。 Nginx配置非常类似于官方文档(http://sentry.readthedocs.org/en/latest/quickstart/nginx.html),由于HTTPS而进行了一些更改。
答案 0 :(得分:2)
我遇到了同样的问题,并通过安装以下依赖项来修复它:
在Ubuntu上:
sudo aptitude install libffi-dev
然后通过pip:
pip install pyopenssl ndg-httpsclient pyasn1
问题似乎是Python 2.X不支持开箱即用的SNI(TLS需要),如here所述。