Symfony / GuzzleHttp:限制跨多个使用者/实例的

时间:2017-06-29 11:03:24

标签: php symfony limit guzzle

我一直在研究一个项目,该项目从API获取数据并在本地处理该数据以用于各种用途。目前,消费者从其用于触发匹配的Symfony命令的消息队列中获取JSON对象。速率限制内置于这一个消费者,非常简单,并自动调整自身来自API的状态响应。问题是,它的设置方式,它不能并行运行,如果API上的版本化静态数据有重大更新,所有处理都会在缓存新静态数据时停止。

我查看了使用rabbitmq-bundle Symfony软件包并将命令转换为具有各自通道的独立使用者,以便它们可以并行运行并且不再相互阻塞,但这会带来一些问题我我一直坚持如何处理。

首先,我仍然需要管理限制所有消费者的API调用。我有一个Guzzle的包装器,从理论上讲,它可以使用一个简单的文件来管理所有实例中的调用次数。我查看了现有的令牌桶库,但将其设置为在Symfony中工作看起来有问题,因为如果重新启动消费者,每个消费者都可能重置令牌的数量,所以...不确定该去哪里。

第二,有些消费者可能会从主API中搜索我们仍然没有匹配版本的静态数据的数据。如果发生这种情况,它需要触发相关的消费者,但前提是每个队列中还没有触发器...我可以看到的可能解决方案是在发布消息时记录文件中的最新请求版本更新它并让消费者等待数据在本地可用。再次,有点失去了如何最好地处理这个。

0 个答案:

没有答案