youtube-api - 在开发聊天机器人时,处理 YouTube 数据 API 配额的最有效方法是什么?
问题描述
我目前正在为一个特定的 YouTube 频道开发一个聊天机器人,它已经可以从当前活动的实时聊天中获取消息。但是我注意到我的配额使用量猛增,所以我冒昧地计算了我的配额成本。
我的 API 调用目前看起来像这样https://www.googleapis.com/youtube/v3/liveChat/messages?liveChatId=some_livechat_id&part=snippet,authorDetails&pageToken=pageTokenIfProvided
,它使用了 5 个单位。我通过运行一个 API 调用并比较之前和之后的配额使用情况来检查这一点(抱歉,如果这不准确)。响应包含pollingIntervalMillis
设置为5086
毫秒。目前,我的机器人将该时间间隔添加到当前日期时间,并在该时间安排下一次获取(使用 Celery),因此它目前以 4-6 秒的速率获取消息。我会冒昧地等待 6 秒。
计算我的 API 配额将导致每天使用 72.000 个单位:
10 requests per minute * 60 minutes * 24 hours = 14.400 requests per day
14.400 requests * 5 units per request = 72.000 units per day
这意味着,如果我将pollingIntervalMillis
用作请求频率的指导方针,我可以通过运行机器人 3 小时 20 分钟轻松达到 10.000 个单位的最大配额。为了不通过仅获取聊天消息来耗尽配额,我需要每分钟运行 1 次 API 调用(大约 1,3889 次)。这对于聊天机器人来说是非常不可行的,因为这仅用于获取消息,甚至不向聊天发送任何消息。
所以我的问题是:是否有一种更有效的方式来获取不会占用太多配额的聊天消息?还是我只能通过申请配额延长来解决这个问题?如果这只能通过配额延长来解决,我需要可靠地要求多少?大约 10 万个单位?更?
我也在问自己,尽管有成千上万的用户使用他们的 API 客户端,但像 Streamlabs Chatbot(以前称为 AnkhBot)这样的东西是如何在不达到配额限制的情况下实现这一点的,他们的配额可能必须达到数百万或数十亿。
另一个问题是,如果机器人仍处于这种“早期”开发状态,我将如何实际填写表格?
解决方案
你几乎一针见血。像 Streamlabs 这样的服务由大公司拥有,在他们的例子中是罗技。他们不仅有钱花在增加 API 配额等事情上,而且还与谷歌等公司建立了专业关系,以降低单位成本。
至于效率,API 成本很容易在文档中找到,但对于您发现的实时聊天,您将在每次点击中使用 5 个单位的 API。降低通话总成本的唯一方法是减少通话频率。虽然每分钟一次显然过长,但每 15-18 秒一次可以降低 API 配额增加的总体成本,同时使聊天机器人具有足够的响应能力。
当然,这一切都取决于您对数据的期望用途,但如果您仍在业余爱好者使用领域实施机器人,这仍然是一个建议。
推荐阅读
- plot - gnuplot 地图中出现重影键
- dynamics-crm - 获取特定的 CRM 组织而不是全部
- django - 如何从 Django 中的 Queryset 返回几个 FileField?
- mysql - 通过使用查询,如何在数据库中创建表而不是在 SSMS 中创建模式
- python - Django管理员重置过滤器选择的搜索框查询
- angular - Angular Firebase 身份验证服务不起作用
- mongodb - 在mongodb的聚合查询中,基于一个公共字段将两个对象数组组合成一个数组
- matlab - 获取 3D 矩阵内最大值的位置
- python - 如何制作一个包含 math.pow 函数的简单计算器。math.pow 函数抛出错误
- angular - 如何使用布尔值正确映射两个数组