首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Django API处理并发请求

用Django API处理并发请求
EN

Stack Overflow用户
提问于 2020-02-26 10:33:49
回答 2查看 4K关注 0票数 1

我想用DRF (https://www.django-rest-framework.org/)创建一个简单的Rest。另一个服务将发出请求,其中它提供了一个JSON。这个json被解析了,一些相当简单的熊猫数据操作即将进行。结果通过JSON发回。

有办法使这个进程多线程吗?尽管熊猫的操作相当简单,但它们仍可能需要0.5s-1s,如果在同一时刻出于某种原因有3-4个这样的请求,我想避免人们等待几秒钟。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-26 10:46:18

您是否使用YourAPIScript.py runserver部署您的API?

据我所知,它是单线程的,所以在处理完另一个请求之前,它无法开始处理另一个请求。

解决方案:

  1. 如果您使用更面向生产的WSGI服务器,如uwsgi,则可以将其设置为一次服务多个请求。从Django文档中尝试本教程:如何在uwsgi中使用Djanog
  2. 如果使用gunicorn,可以增加工作者和线程的数量,或者将worker类切换到非阻塞的geventeventlet (http://docs.gunicorn.org/en/stable/settings.html#id75)。对于员工计数和线程,缺省值为1,这意味着默认情况下您将得到1请求的并发性。
  3. 还可以为此使用任务队列。大多数人使用芹菜
票数 5
EN

Stack Overflow用户

发布于 2020-02-26 10:47:42

在我看来,避免使用多线程解决这个问题可能是个好主意。这样做可能会更好:

  1. 客户端向API发送JSON;
  2. API创建芹菜任务来处理JSON,然后返回某种id或URL来存储结果;
  3. 芹菜任务在后台处理JSON;
  4. 当结果准备就绪时,外部服务可以使用步骤2中的id或URL获取它。

在我看来,使用Pandas处理JSON不是您在请求响应过程中想要做的事情,它更适合异步任务体系结构。今天可能需要0,5-1秒,但明天可能需要10秒钟,然后挂起应用程序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60411877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档