alialican / hubspot-rate-limiter
该软件包使用速率限制器包装默认的 hubspot/api-client 软件包,以便您不会违反 API 限制
Requires
- php: >=8.0
- hubspot/api-client: ^8.0
- illuminate/cache: ^8.0
- predis/predis: ^2.2
This package is auto-updated.
Last update: 2024-09-10 02:40:21 UTC
README
本软件包为 HubSpot API 客户端提供了速率限制包装器,允许您为您的 HubSpot API 调用设置每秒和每天的速率限制。它利用 Redis 缓存存储进行高效速率限制。如果 Redis 不可用,则回退到通用的缓存实现。
安装
使用 Composer 安装此软件包
composer require alialican/hubspot-rate-limiter
用法
1. 在您的代码中导入软件包
use HubSpotRateLimiter\HubSpotClientWrapper;
2. 创建 HubspotClientWrapper 类的实例,并传递必要的依赖项
use Illuminate\Support\Facades\Cache;
use HubSpot\Discovery\Discovery;
$hubspotClient = new Discovery();
$secondLimit = 100; // Replace with your desired per-second limit
$dailyLimit = 250000; // Replace with your desired daily limit
$hubspot = new HubspotClientWrapper($hubspotClient, $secondLimit, $dailyLimit);
像使用原始 HubSpot API 客户端一样使用 $hubspot 实例。速率限制器将自动对每个 API 调用强制执行指定的速率限制。
$result = $hubspot->crm()->contacts()->getAll();
重要提示
此软件包使用 Laravel 的 Cache 门面进行速率限制。请确保您在 Laravel 配置中设置了正确的缓存驱动器。当缓存驱动器是 Redis 时,速率限制器将直接与 Redis 进行交互以进行高效速率限制。请确保您的 Redis 配置正确设置。如果您的 Redis 设置不寻常或复杂,基于 Redis 的速率限制可能无法按预期工作。在 enforceRateLimitGeneric 方法中使用的速率限制机制比较简单,可能无法像基于 Redis 的解决方案那样高效地处理高并发率。该软件包假定 Redis 服务器支持 eval 命令,因为它使用 Lua 脚本进行速率限制。如果您的 Redis 服务器不支持此命令,速率限制可能会失败。请确保在您的特定环境中彻底测试软件包,以确保它满足您的需求,并且与您的 Redis 配置正确无误。
许可证 此软件包是开源的,并使用 MIT 许可证授权。
请随意自定义和扩展 README,以提供更多信息或澄清针对您特定用例的任何其他详细信息。