【问题标题】:Qualtrics API, getting "[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:2570)"Qualtrics API,获取“[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] 解密失败或坏记录 mac (_ssl.c:2570)”
【发布时间】:2021-11-19 09:50:52
【问题描述】:

使用 python 请求库向 Qualtrics API 发出请求时,我偶尔会遇到上述错误。

简而言之,我在 Google Cloud 上有一个 Google Cloud 功能,当 csv 文件放置在特定的云存储桶上时会触发该功能。该功能将在 Qualtrics 上创建 Qualtrics 分发列表,上传联系人,然后下载分发链接。 每天,三个文件都会上传到 Cloud Storage,每个文件用于不同的调查,因此将启动三个 Google Cloud 实例。

我对这些问题的不满是:

  • 这种情况并不经常发生,实际上工作流程在过去一年中正常运行
  • 它似乎与已处理的文件无关:当函数崩溃并且我通过将 same csv 重新上传到存储桶中手动重新启动它时,它会顺利运行

问题开始于我们将第三个每日 csv 添加到进程时,并且往往在同时处理两个文件时发生。由于这些原因,我的嫌疑人是:

  • 我的速率受到 Qualtrics 的限制(但我希望 Qualtrics 提供更明确的信息)
  • 在处理两个文件时,请求会以某种方式“交叉”。我不确定 requests.request 是否隐式打开与 API 的会话。在这种情况下,问题可能是由于同时处理两个 csv 的多个会话同时打开而产生的

正如我所说,错误似乎是在没有模式的情况下发生的,并且它发生在我向 API 发出请求的代码的任何部分,所以我不确定共享大量代码是否有帮助,但总的来说,请求是以非常标准的方式执行的:

requests.request("POST", requestUrl, data=requestPayload, headers=headers)

requests.request("GET", requestUrl, headers=headers) 等等

即:我没有使用任何特定的自定义选项

【问题讨论】:

  • 嘿,从你的问题我了解到你正在使用云函数与 Qualtrics 的 API 进行交互,特别是根据三个文件制作分发列表,其中包含然后上传的联系人。如果有什么我误解了,请告诉我。就 Cloud Functions 而言,当涉及到出口消息时,它将充当任何其他客户端(它在 G.Cloud 内部有所不同,因为它是内部的),所以我想知道您如何与 Qualtrics 交互,就好像问题可能不在 Qualtrics,知道这将有助于找到根本原因。
  • 是的,您对架构的看法是正确的。在运行期间,云函数将执行各种操作(创建联系人列表、解析 csv 等),然后它将循环遍历 csv 并在 qualtrics 上一一上传联系人。这个阶段是我通常得到错误的地方,对于单个联系人来说,这似乎是随机发生的。上传是通过https://fra1.qualtrics.com/API/v3/mailinglists/{mailinglistid}/contacts 上的 POST 请求完成的。该请求包括一个包含客户信息的 json 有效负载。

标签: python python-requests google-cloud-functions qualtrics


【解决方案1】:

最后我用一种变通方法解决了这个问题:

  • 我把三个csv的处理分开了,这样两个文件的处理时间就没有重叠了
  • 在 POST 请求中实现了重试策略

从那时起,分离文件的处理时间大大减少了错误的数量(从每天一个或多个减少到每周大约 1 个错误),即使发生错误,重试策略也会在第一次重试时规避错误。 我意识到这可能不是理想的解决方案,所以如果有人提出更好的解决方案(或者对根本问题的更多见解),我愿意接受替代方案。

【讨论】:

  • 对不起,但我很好奇:你是如何分离 3 个 csv 进程的?完全分离它们还是仅在发送帖子时才分离它们(在不同的线程中而不是函数的实例中)?
  • 我通过在不同时间处理每个文件将它们完全分开。基本上,处理文件 2 的云函数调用在文件 1 完成后开始,文件 3 在文件 2 完成后处理。这是因为有几次错误也发生在进程的其他部分(例如:创建联系人列表时),还因为我承认我不太精通多线程:)
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2017-12-26
  • 2012-08-06
  • 2014-05-10
相关资源
最近更新 更多