Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kombu+;RabbitMQ:检查队列是否为空 建筑学_Python_Rabbitmq_Kombu - Fatal编程技术网

Python Kombu+;RabbitMQ:检查队列是否为空 建筑学

Python Kombu+;RabbitMQ:检查队列是否为空 建筑学,python,rabbitmq,kombu,Python,Rabbitmq,Kombu,考虑一个具有DB记录的系统。每个记录可以处于实时或过期状态实时记录应使用外部软件模块定期处理 我使用Kombu和RabbitMQ的经典生产者-消费者体系结构解决了这个问题。生产者每隔几秒钟从数据库中获取一次记录,消费者处理这些记录 问题 live事件的数量变化很大,在高峰时段,消费者无法处理负载,队列中塞满了数千件物品 我希望使系统自适应,以便在队列为空时,生产者不会向使用者发送新事件 我试过什么 搜索Kombu文档/API 检查队列对象 使用RabbitMQ REST API:http:/

考虑一个具有DB记录的系统。每个记录可以处于
实时
过期
状态<代码>实时记录应使用外部软件模块定期处理

我使用Kombu和RabbitMQ的经典生产者-消费者体系结构解决了这个问题。生产者每隔几秒钟从数据库中获取一次记录,消费者处理这些记录

问题
live
事件的数量变化很大,在高峰时段,消费者无法处理负载,队列中塞满了数千件物品

我希望使系统自适应,以便在队列为空时,生产者不会向使用者发送新事件

我试过什么
  • 搜索Kombu文档/API
  • 检查队列对象
  • 使用RabbitMQ REST API:
    http://:可以在kombu队列对象上调用queue_declare()

    根据函数返回的值:

    Returns a tuple containing 3 items:
            the name of the queue (essential for automatically-named queues)
            message count
            consumer count
    
    因此,您可以:

    name, msg_count, consumer_count = queue.queue_declare()
    

    如何导入队列?从kombu导入队列。queue是一个队列对象。由于我在文档中再也找不到它,请您使用链接参考文档。您可以在channel.py中的amqp模块的docstring中找到它