LiveChatMessages.list 方法会产生多少配额成本?

How much quota cost does the LiveChatMessages.list method incur?

我现在正在编写这个应用程序,它的一个组件正在使用 LiveChatMessages 资源的列表方法来检索流中的所有实时聊天。我的问题不在于功能本身,youtube 文档对此非常清楚(如果您正在阅读本文,请向 youtube 工程师致敬)。

我的问题是关于配额系统。在解决这个问题的过程中,我首先找到了 youtube 数据 API 配额的圣杯,也就是文档。它把我带到了这个页面:

https://developers.google.com/youtube/v3/determine_quota_cost

现在,这里包含各种 Youtube 数据 API 资源的所有配额信息,但 LiveChatMessages 资源除外。具有讽刺意味的是,顶部的文字说:

YouTube Live Streaming API methods are, technically, part of the YouTube Data API, and calls to those methods also incur quota costs. As such, API methods for live streaming are also listed in the table.

然而 table 甚至没有提及有关直播的任何内容 API。现在,我只是从所有其他方法的上下文中略过这一点,并假设它只产生一个配额。

我 运行 我的应用当时处于大约 500 名观众的中等规模流中,并且配额 运行 用完的时间比我预期的要少。现在,我不确定我是否正确理解了配额成本,或者 LiveChatMessages.list 方法有一个完全不同的配额系统。

但是我的应用程序每 5 秒查询一次 LiveChatMessages.list 方法。这意味着它每分钟会产生 12 个配额成本,每小时会产生 720 个配额成本。而且由于我的配额限制为 10,000。我假设它能够在没有配额上限的情况下处理超过 13 小时的直播。但是,在配额达到上限之前只有大约几个小时。

无论如何,希望 youtube 工程师能看到这一点,并能告诉我 LiveChatMessages.list 方法的配额机制是什么样的,因为文档并没有真正提到它。

简答

根据我的计算,一个LiveChatMessages.list请求消耗的配额点数是5点。

说明

5 分的请求成本是根据 API 访问一天的总查询成本的反算得出的。示例 YouTube 应用程序查找最新的直播并定期从聊天中检索所有直播消息。 运行 一天后,访问 google cloud platform quotas section 并确定 YouTube 数据 API v3 每天 的配额服务。此屏幕截图显示每日配额的当前使用量为 8,180:

现在,访问 YouTube API metrics,我们可以按类型获得 API 调用的细分:

num calls service call type
45 youtube.api.v3.V3DataLiveBroadcastService.List
1,627 youtube.api.v3.V3DataLiveChatMessageService.List

45 + 1,627 = 8,180 怎么算?聊天消息列表请求的 5 分因素:

8,180 个配额点 = 5x(1627 个消息列表请求)+ 1x(45 个广播请求)


Youtube 实用限额API10000 点名额

正如我在问题跟踪器中指出的那样,这个限制似乎很合适。对于通过每 1 秒发出请求来与实时聊天交互的应用程序:

(10,000 points) / (5 pts/request) / (1 request/s) / (60 min/hr) = 33 minutes

考虑极端情况:如果直播流运行 24 hrs/day,配额可以支持多少个实时聊天请求?

(5 pts/request) / (10,000 points/day) * (24 hr/day) * (3600 s/hr) = 43.2 s/request