【发布时间】:2019-01-21 10:48:03
【问题描述】:
我有一个程序在我的用户/virtualenv 中成功运行。该程序使用requests 访问API。就本文而言,整个程序可以理解为:
requests.get("https://example.com")
当我从命令行调用它时,它工作得很好。但是,我试图让它在supervisord 下运行,无论出于何种原因,当我这样做时,它都会失败,并出现如下所示的 SSL 错误:
SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)")
它使用相同的用户、python 环境、目录等。知道还有什么要检查的/还有什么可能导致这种情况?
编辑:我认为这可能是防火墙规则类型的事情。探索该选项。
【问题讨论】:
-
您是否尝试将
verify=False添加到您的请求中:requests.get("https://example.com", verify=False)? -
是的,如果我添加
verify=False,我会收到一个不同的错误(奇怪的是来自服务器的502,尽管它在正常运行时总是返回200。另外,我不想添加verify=False作为长期解决方案,即使它确实有效,因为我确实想验证证书。 -
您是否尝试按照建议的here 降级
requests? -
我没有这样做,但我认为这有点忽略了问题的重点——这就是为什么在主管下运行时表现不同?因此,任何涉及绕过请求的解决方法似乎都无法解决问题的根本原因。
标签: python ssl python-requests ssl-certificate supervisord