alialican/hubspot-rate-limiter

该软件包使用速率限制器包装默认的 hubspot/api-client 软件包,以便您不会违反 API 限制

v1.0.1-beta 2023-07-10 00:16 UTC

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,以提供更多信息或澄清针对您特定用例的任何其他详细信息。