antelucangizmos / guzzle-retry-handler
测试支持重试的Guzzle客户端
0.1.2
2024-06-19 20:45 UTC
Requires
- guzzlehttp/guzzle: ^7.8
Requires (Dev)
- phpunit/phpunit: ^11.2
README
API可能实现速率限制,如果它们这样做,您的客户端可能会收到带有Retry-After
头的429 Too Many Requests
响应,告知您的客户端在发出下一个请求之前应等待多长时间。
本项目的实现是一个PoC,因此您可以在此基础上构建,如果认为应该添加或删除某些内容,请发表评论。
示例用法
require dirname(__DIR__, 2) . '/vendor/autoload.php'; use Ag\Guzzle\Handler\Retry; use GuzzleHttp\Client; use GuzzleHttp\Exception\ConnectException; use GuzzleHttp\Handler\CurlHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; class TestRetry { public function test(int $maxRetries = 5) { $handlerStack = HandlerStack::create(new CurlHandler()); $retry = new Retry($maxRetries); $handlerStack->push(Middleware::retry($retry->retryDecider(), $retry->retryDelay())); $client = new Client(array('handler' => $handlerStack)); $response = $client->request( 'GET', // @ToDo replace to a real url!!! 'https://some-url-here' )->getBody()->getContents(); return print_r($response, true); } } try { $TestRetry = new TestRetry(); $response = $TestRetry->test(5); echo $response . PHP_EOL; } catch (ConnectException $e) { echo $e->getMessage() . PHP_EOL; }