【问题标题】:Getting numerious data from API从 API 获取大量数据
【发布时间】:2016-02-04 20:36:04
【问题描述】:

我对使用公共 API 很陌生,遇到了一个我不太确定如何解决的问题。最重要的是,我在谷歌表单上进行了注册,我将在我的游戏之夜获得大约 100-150 名玩家注册。发生这种情况时,我需要检查他们并确保他们中的所有 150 人都拥有该游戏并且至少玩了 50 个小时,这是我对越来越多的蓝精灵帐户的衡量标准。

因此,我在我的服务器上编写了一些代码,这些代码将查看提供的 Steam ID,然后获取他们拥有的游戏以及他们玩的小时数。这样我就可以识别出有问题的游戏,然后我只需给出通过或失败。

虽然这一切都很好,但我开始担心我发送的请求数量以及是否应该以不同的方式处理这个问题。现在,如果我有 150 名玩家,我将向 Steam 发送 150 个请求,这似乎不是正确的做法。

查看他们的 API,我无法找到任何类型的方法来返回我所拥有的玩家范围内的游戏。因此,我唯一能做的就是我上面描述的。

我的问题是这样的:

当使用公共 API,例如 Steam 的 api 时,可以使用我上面的方法吗?发送如此大量的请求会让我被列为潜在的垃圾邮件发送者,或者在我开始担心之前这个数字是多少?

【问题讨论】:

    标签: api steam steam-web-api


    【解决方案1】:

    是的,使用你的方法绝对没问题。


    Steam Web API

    来自Steam Web API Terms of Use

    您最多只能拨打十万 (100,000) 次 Steam 电话 每天的 Web API。

    在使用公共 API(不仅是 Steam 的)时,请始终注意使用条款。

    如果你达到这个数字,你可能开始担心了。然后,可能发生的最糟糕的事情是您的请求将不再得到满足,并且您的 API 密钥很可能会被撤销(这就是它在这里的原因之一)。

    有猜测认为 Web API 有进一步的限制:


    Steam Community Data

    警告:社区 XML 数据已弃用。我们建议尽可能使用 Web API。

    很可能社区数据的速率限制要低得多,因为建议使用 Web API。


    注意事项:

    在开发completionist.me 时,我从未遇到任何这些限制。一次是 30,000/天,没有一个不满足的请求发生(至少不是由速率限制引起的)。

    如果您想确保在客户端使用作业队列进行节流以控制请求率并在一段时间后重试失败的作业(API 请求)。

    鉴于 API 实现得很好,您会在遇到任何“麻烦”之前收到HTTP 429 - Too Many Requests。据我所知,Steam 的 Web API 并非如此。如果发生错误(大部分时间),它会以 HTTP 403 静默失败。

    【讨论】:

      【解决方案2】:

      每天发送 150 个 API 调用,在 Steam 这样的主要供应商环境中,算不了什么。如果您的服务变得闲聊,他们将开始限制您的请求,但 Steam 的限制应该是大约每秒一个请求。

      如果 API 提供批处理调用或查询调用,最好使用它。例如,GetPlayerSummaries 应该允许您在一次调用中提供多个 steamid。据我所知,为了获取详细信息,Steam 不提供批处理 API,从而使您正在做的事情以正确的方式进行。

      (切题评论:您可能需要考虑这是否是实现目标的最佳方式,或者更改游戏设计/匹配/等以降低 smurf 帐户的价值是否可能更有效地解决问题根。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        • 2015-01-18
        • 2022-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        相关资源
        最近更新 更多