我正在使用Python和Facebook Graph API编写合规性集成,以搜索我们的Workplace社区中针对给定关键字的所有用户内容。我之前每次都有一些工作,但最近(过去几天)发送给Facebook的一个请求将返回一个FacebookApiException,错误代码为960,并显示消息“请求已中止。如果依赖请求失败,可能会发生这种情况或整个请求超时。“在成功收到数千个成功请求之后。这不会一直发生,但往往会失败。
{
"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
答案 0 :(得分:0)
这个问题比较老,但是万一其他人正在寻找答案。
我无法回答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
]
使用他们的示例,您只需要重新排队批处理请求数组中与空响应相对应的项目即可。