API 访问频率控制 - 友好速搭 -- 开发文档

友好速搭

开发文档 > 应用开发 > 应用开发 > 开发指南 > API 访问频率控制
应用开发
创建应用 开发指南

API 访问频率控制

友好速搭的开放 API,对访问总次数,并没限制。限制的是访问频率,并且是以 access token 为单位。参考访问频率限制

当在开发对接开放 API 的应用时,需要在应用中,控制好访问 API 的频率。

私有应用的频率控制

对私有应用,由于只有一个 access token,可以直接 sleep 来控制频率。如果使用多线程操作,需要通过 lock 控制好线程之间的同步。当应用是分布式部署时,那就需要分布式锁,来同步不同进程的访问频率。

简单的分布式锁,可使用 Redis 的 SETNX 命令实现。可以用 token 作为 Redis 的 key,使用 SETNX 赋值后,如果成功,返回整型 1,说明获取锁成功,可以访问 API,访问结束后,进行 sleep,然后删除 key,来释放锁。返回整型 0,获取锁失败,无法访问 API。

开放应用的频率控制

对开放应用,应用安装到不同网站,会生成不同的 access token。此时,建议采用外部存储,来记录不同 token 的频率,进而实现频率控制。例如,可以使用 Redis 的 Hash 结构,将 token 作为 Redis key,对应 Hash 值中,存储两个字段:

  • count,初始值为 0,访问 API 后,置为 Response Header 中X-YHSD-SHOP-API-CALL-LIMIT的访问次数
  • time,上次访问 API 的时间

在应用中,访问 API 前,应执行如下操作(伪代码):

limit_hash = redis_get(token)
seconds = time.now - limit_hash['time']
used = limit_hash['count']
# API 中的漏出频率,每秒 2 个
leaked = seconds * 2
# 可访问次数
spared = used - leaked
if spared < 40
# 可以执行 API 访问
else
# 需要等待后才可反问
end
免费领取15天试用
立即注册
联系客服
微信咨询
微信二维码

领取免费试用资格

姓名 *

电话 *

公司名称

所在地区

意向产品

提交

提交成功

你好, XXX女士/先生 ,你的需求已提交成功,后续会有专门的客户经理与你电话联系。谢谢!