gpt4 book ai didi

Laravel队列速率限制或限制

转载 作者:行者123 更新时间:2023-12-04 21:32:37 26 4
gpt4 key购买 nike

我正在开发一个需要从第三方服务器获取数据的应用程序,该服务器每秒最多允许1个请求。

现在,所有请求都作为作业发送,我正在尝试实现Laravel“Rate Limiting”,以每秒释放1个作业,但无法弄清楚为什么应该执行该作业,并且网络上没有实际的示例。

有人实现过吗?

有什么暗示吗?

最佳答案

我是mxl/laravel-queue-rate-limit Composer软件包的作者。

它允许您在不使用Redis的情况下对特定队列上的作业进行限速。

  • 使用以下方法安装:
    $ composer require mxl/laravel-queue-rate-limit:^1.0
  • 此软件包与Laravel 5.5+兼容,并使用auto-discovery功能将MichaelLedin\LaravelQueueRateLimit\QueueServiceProvider::class添加到提供程序。
  • 将速率限制设置添加到config/queue.php中:
    'rateLimit' => [
    'mail' => [
    'allows' => 1,
    'every' => 5
    ]
    ]

    这些设置允许在mail队列上每5秒运行1个作业。
    确保将默认队列驱动程序(default中的config/queue.php属性)设置为sync以外的任何值。
  • 使用--queue mail选项运行队列工作器:
    $ php artisan queue:work --queue mail

    您可以在多个队列上运行worker,但是只有rateLimit设置中引用的队列会受到速率限制:
    $ php artisan qeueu:work --queue mail,default
    default队列上的作业将不受速率限制地执行。
  • 将一些作业排队以测试速率限制:
    SomeJob::dispatch()->onQueue('mail');
    SomeJob::dispatch()->onQueue('mail');
    SomeJob::dispatch()->onQueue('mail');
    SomeJob::dispatch();
  • 关于Laravel队列速率限制或限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399618/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com