哪些请求应该由网络服务器处理,哪些由任务队列工作者处理?

Posted

技术标签:

【中文标题】哪些请求应该由网络服务器处理,哪些由任务队列工作者处理?【英文标题】:Which requests should be handled by the webserver and which by a task queue worker? 【发布时间】:2021-12-03 02:31:02 【问题描述】:

我正在开发一个使用 Celery 来安排和执行用户作业请求的 Python Web 应用程序。

大多数情况下,用户提交的请求无法立即得到解决,因此将它们安排在队列中对我来说是有意义的。

但是,现在我已经有了整个队列架构,我很困惑是否应该将所有请求处理逻辑委托给队列/workers,或者是否应该将一些工作留给网络服务器本身。

例如,除了作业调度,有时用户只需要执行简单的数据库查询,或检索静态 JSON 文件。我是否也应该将这些“同步”请求委托给队列/工作人员?

现在,我的网络服务器控制器除了验证传入的 JSON 请求模式并将它们转发到队列之外什么都不做。拥有这样一个愚蠢的网络服务器有什么优点和缺点?

【问题讨论】:

【参考方案1】:

我相信你现在拥有它的方式加上现在给工人提供小工作是好的。这样一来,一旦发生攻击或大量请求涌入,工作人员将首先超载。 :)

【讨论】:

以上是关于哪些请求应该由网络服务器处理,哪些由任务队列工作者处理?的主要内容,如果未能解决你的问题,请参考以下文章

网页由哪些元素构成?

为什么要使用消息队列?

UNIX环境下如何应用消息队列实现进程间通信

ExpressJS 后端将请求放入队列

云计算是什么?云计算的核心技术有哪些?

Celery + Flower + FastAPI + RabbitMQ ,Python实现异步消息队列和监控