芹菜限价要求

时间:2016-09-21 07:18:43

标签: python api rabbitmq celery message-queue

我需要找到一种方法来限制RabbitMQ传递任务我的内部API服务器。

这是我的流程:

API客户端>内部API> RabbitMQ>芹菜(120名工人)>外部API

API客户端向内部API发送Web请求,内部API处理请求并将Task发送到RabbitMQ。任务持续时间可能需要5秒到120秒,在某些情况下,任务开始排队,并且它们以比定义的更高的速率发送到外部API,从而导致许多失败的请求。 (大约5%的失败请求)

enter image description here

每个请求都成为RabbitMQ任务。 RabbitMQ默认情况下尽可能快地执行任务,导致排队的任务在释放工作人员后立即以更快的速度传递。 (> 10 QPS),

问题:如何在RabbitMQ上限制任务交付?

版本:

  • Flask
  • RabbitMQ 3.6.4
  • AMPQ 1.4.9
  • kombu 3.0.35
  • 芹菜3.1.23
  • Python 2.7

可能的解决方案:

  • 从外部增加外部API限制......
  • 添加更多工作人员
  • 跟踪失败的任务并稍后重试

虽然这些解决方案可能有效,但并不能完全解决我的速率限制器的实现问题,也无法控制我的工作人员处理API请求的实际速率。

0 个答案:

没有答案
相关问题