我正在使用Guzzle6开发一个Laravel应用程序。很多功能都依赖于API,我已经为其创建了一个包装器。
我的包装器是一个类,它在<code>__construct()。
我使用的API每10秒钟有40个请求的限制。我正在缓存东西,所以很少会达到这个极限,但是我想知道如果达到这个极限,我的应用程序不会就这么死掉!
关于我的应用程序的一些注意事项:
所以,我的问题是,我应该如何确保我没有达到这个限制?我的一些想法如下:
我试着不去引起过于固执己见的回应,但我确信可能有比以上更好和/或更简单的方法,或者如果它们是好主意,任何指示或建议都将是很棒的。
提前致谢。
我也在处理同样的问题,我更喜欢基于回调的架构,我的Client
类控制请求流。目前我正在做睡眠和检查算法。我为我工作,因为我有3秒的冷却时间。
我使用缓存
保存已触发请求的计数。
while(($count = Cache::get($this->getCacheKey(),0)) >= 40){ // Max request
sleep(1);
}
Cache::set($this->getCacheKey(), ++$count);
// fire request
function getCacheKey(){
return floor(time()/10); // Cool down time
}
排队似乎是一个更好的选择,我最终会转向这一点。在将队列置于两者之间之前,您需要记住几件事。
没有足够的信息来深入研究这个问题,但是为了让您开始,当您超过它们的限制时,好的API通常会返回一个429响应代码。
你可以使用$res-
你能提供一些关于你的应用程序正在做什么的更多信息吗?您是否在foreach循环中发出请求?视图是否依赖于此API中的数据?
>
用作业包装您的API调用并将它们推送到单独的队列:
ApiJob::dispatch()->onQueue('api');
使用mxl/laravel-queue-rate-limit包(我是作者)对< code>api队列进行速率限制。将它添加到< code>config/queue.php中:
'rateLimit' => [
'api' => [
'allows' => 40,
'every' => 10
]
]
运行队列工作线程:
$ php artisan queue:work --queue api
另请参阅此答案。
看起来 grpc 先决条件是 java 7 或更高版本。 安装grpc时出现异常。Java . lang . unsupportedclassversionerror:com/Google/proto buf/grad le/proto buf plugin:不支持的major.minor版本51.0 我有java 6在本地运行。可能是grpc运行java 6的一种方式?
我正在我的网络空间上安装Google API PHP客户端(2.1.0)并遵循本教程。问题是当我转到时,我有一个PHP错误: 致命错误:未捕获异常“GuzzleHttp\Ring\exception\ConnectException”,消息为“cURL error 6:请参阅”http://curl.haxx.se/libcurl/c/libcurl-errors.html'in/reportin
我在Windows8机器上从命令行运行Grunt时出现问题。 我的研究表明,最常见的解决方案是安装grunt-cli,因为Grunt不再是全局的。我还需要确保实际安装了Grunt任务运行程序,因为它不是与grunt-cli一起安装的。 其他解决方案指向PATH系统环境变量,但它似乎与我预期的一样: null
我试着向Github API发出一个API请求,只是为了测试。我在我的Laravel 5.1应用程序上安装了最新的Guzzle版本(“guzzle/guzzle”:“^3.9”)。在我的< code>routes.php中,我有以下代码: 如果我现在访问URLdomain.dev/github/kayyyy我得到错误。 为什么我会收到此错误? 如果我访问https://api.github.com
因此,我在删除和安装node和npm以安装没有sudo的软件包时遇到了麻烦,现在我无法在Webstorm中使用Grunt面板 信息是: 请注意,我已经安装了。
这是来自Cloudinary文档的代码, 所以我不能以这种方式将Guzzle验证设置为假 我的问题是,通常在应用程序中,如何将Guzzle Http客户端验证设置为false