限制对 Facebook 的通话 graph_url_engagement_count

Limit calls to Facebook graph_url_engagement_count

我收到此错误,“(#613) 对 graph_url_engagement_count 的调用已超过每 3600 秒 10 次调用的速率。”所以我想将对 API 的调用保持在给定 link.

的限制内

注意:每小时 10 次调用的限制仅适用于每个 link。

这是我正在使用的功能:

const getFacebookStats = async (link) => {
  try {
    const resp = await axios.get(
      `https://graph.facebook.com/v12.0/?id=${link}&fields=engagement&access_token=${BEARER_TOKEN_FACEBOOK}`
    );
    return resp.data.engagement;
  } catch (err) {
    // Handle Error Here
    console.error(err);
  }
};

如有任何帮助,我们将不胜感激。

谢谢

使用 LRU 缓存解决了这个问题。

cache.set(link, cache.get(link) == undefined ? 1 : cache.get(link) + 1);

每次将 link 传递给 getFacebookStats 函数时,link 及其计数都会存储在 LRU 缓存中,如果同一个 link 被多次调用,则其计数增加了。

在LRU缓存的设置中,maxAge设置为1小时:

maxAge: 1000 * 60 * 60,