执行Python POST请求时出现间歇性SSL解密错误

时间:2019-06-10 03:55:35

标签: python ssl heroku openssl python-requests

我们有一个在Heroku上运行的应用程序(基于Ubuntu 18),后端在Python Django中,当用户在我们的应用程序中上传PDF简历时,我们调用简历解析器API来解析简历并创建候选人他们。

工作正常,直到最近我们在恢复解析器API上执行POST请求时看到一些SSL错误,这种情况很少发生,但现在每周都会弹出几次(据我们所知,我们尚未更改任何内容,也许我们的用户基地正在增长)

代码如下:

    api_url = "https://eu-rest.resumeparsing.com/v9/parser/resume"
    base64str = base64.b64encode(resume_file).decode("UTF-8")
    payload = {"DocumentAsBase64String": base64str}
    headers = {
        "accept": "application/json",
        "content-type": "application/json",
        "sovren-accountid": self.api_account_id,
        "sovren-servicekey": self.api_key,
    }
    response = requests.request(
        "POST", api_url,
        data=json.dumps(payload),
        headers=headers
    )

这是间歇性错误(发生在请求POST行上): 我们几次遇到了这个:

SSLError
[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:2305)

这个曾经遇到过一次:

SSLError
HTTPSConnectionPool(host='eu-rest.resumeparsing.com', port=443): Max retries exceeded with url: /v9/parser/resume (Caused by SSLError(SSLError(1, '[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:2305)'),))

但是,从堆栈跟踪来看,响应似乎包含已解析的简历的有效负载,这使我们认为其API始终可以正常响应。同样在他们这边,他们的日志很好。

我们进行了搜索并阅读,我们可以尝试将诸如verify = False或keepalive = False的参数传递给POST请求函数,但不建议在生产环境中使用(并且我们的错误仅在生产环境中间歇性地发生,我们无法复制它)

我们还阅读到这可能是多个用户同时执行请求的并发问题,也可能与openssl库有关,我们注意到Heroku中的版本为“ OpenSSL 1.1.0g 2017年11月2日”,但例如,我本地的版本为“ OpenSSL 1.1.1b 26 Feb 2019”

可以是openssl版本吗?还是并发问题或其他?谢谢

0 个答案:

没有答案