3

我正在使用 Python 和 Facebook Graph API 编写合规集成,以在我们的 Workplace 社区中搜索给定关键字的所有用户内容。我有一些以前每次都有效的东西,但是最近(过去几天)发送到 Facebook 的一个请求将返回一个带有错误代码 960 的 FacebookApiException,并显示一条消息“请求中止。如果依赖请求失败,可能会发生这种情况或整个请求超时。” 在已经成功接收到数千个成功请求之后。这不会一直发生,但通常会失败。

{
  "error": {
    "message": "Request aborted. This could happen if a dependent request failed or the entire request timed out.",
    "code": 960,
    "type": "FacebookApiException",
    "fbtrace_id": "B72L8jiCFZy"
  }
}

为简单起见,我没有在请求中使用依赖项,所以我只能认为它正在超时。我的问题是——Facebook Graph API 的超时时间是多少?是因为我发送请求的时间太长而超时,还是因为 Facebook 服务器响应我的请求的时间太长而超时?有什么办法可以增加超时来阻止错误消息的发生?

TIA

4

1 回答 1

2

这个问题较旧,但以防其他人正在寻找答案。

我无法回答 Facebook Graph Api 的超时期限是多少,但我可以为遇到超时错误的人指出一个解决方法。

Facebook 有关于如何处理超时的文档: https ://developers.facebook.com/docs/graph-api/making-multiple-requests/#timeouts

如果完成批处理中的所有请求所需的时间过长,则大型或复杂批处理可能会超时。在这种情况下,结果是部分完成的批次。在部分完成的批次中,成功完成的操作的响应看起来很正常(参见前面的示例),而未完成的操作的响应将为空。

响应的顺序与请求中操作的顺序相对应,因此开发人员应相应地处理响应以确定哪些操作成功,哪些应在后续操作中重试。

因此,根据他们的文档,超时的批处理请求的响应应该如下所示:

[
    { "code": 200,
      "headers": [
          { "name":"Content-Type", 
            "value":"text/javascript; charset=UTF-8"}
       ],
      "body":"{\"id\":\"…\"}"
    },
    null,null,null
]

使用他们的示例,您应该只需要重新排队批处理请求数组中与空响应对应的项目。

于 2019-07-11T21:28:43.093 回答