Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Rabbitmq 如何使用金字塔和芹菜处理长时间异步请求?_Rabbitmq_Celery_Pyramid_Amqp - Fatal编程技术网

Rabbitmq 如何使用金字塔和芹菜处理长时间异步请求?

Rabbitmq 如何使用金字塔和芹菜处理长时间异步请求?,rabbitmq,celery,pyramid,amqp,Rabbitmq,Celery,Pyramid,Amqp,我正在用pyramid建立一个web服务。一个典型的视图请求将非常长,大约需要15分钟才能完成。所以我的想法是用芹菜和兔子来排队。 我想知道什么是确保坏事不会发生的最好办法。 例如,我特别希望防止任务队列溢出 第一个方法是定义每个IP的配额,以限制给定IP每小时可以提交的请求数 然而,我无法预测涉及IP的数量,因此这无法解决所有问题 我已经读到,不可能用芹菜/rabbitmq限制队列大小。我曾考虑在将新项目推入队列之前检索队列大小,但我不确定这是否是一个好主意 我不习惯于消息传递/作业调度方面的

我正在用pyramid建立一个web服务。一个典型的视图请求将非常长,大约需要15分钟才能完成。所以我的想法是用芹菜和兔子来排队。 我想知道什么是确保坏事不会发生的最好办法。 例如,我特别希望防止任务队列溢出

第一个方法是定义每个IP的配额,以限制给定IP每小时可以提交的请求数

然而,我无法预测涉及IP的数量,因此这无法解决所有问题

我已经读到,不可能用芹菜/rabbitmq限制队列大小。我曾考虑在将新项目推入队列之前检索队列大小,但我不确定这是否是一个好主意

我不习惯于消息传递/作业调度方面的良好实践。有没有推荐的方法来处理此类问题?

RabbitMQ已内置到QoS中。如果RabbitMQ无法处理发布速率,它将调整TCP窗口大小以降低发布速度。如果发送到服务器的消息太多,它也会溢出到磁盘。这将使您的消费者更天真一些,尽管如果您在出现错误时重新启动连接并使连接泛滥,可能会导致问题

我总是决定花更多的时间确保发布者/消费者可以使用多个队列服务器,而不是试图让他们对单个队列服务器更智能。好处是,如果您真的要重载一台服务器,您可以添加另一台服务器(如果使用RabbitMQ HA,则可以添加另一对服务器)。Pycon提供了一个关于使用芹菜和RabbitMQ的有用视频,应该会很有用