使用 Django API 处理并发请求

Bis*_*_PL 3 python pandas django-rest-framework

我想使用 DRF 创建一个简单的 Rest API ( https://www.django-rest-framework.org/ )。另一个服务将发出提供 JSON 的请求。这个 json 被解析,并且将发生一些相当简单的 pandas 数据帧操作。结果通过 JSON 发回。

有没有办法让这个过程成为多线程?尽管 pandas 操作相当简单,但它们仍然可能需要大约 0.5 秒到 1 秒,如果出于某种原因在同一时刻发出 3-4 个此类请求,我希望避免人们等待几秒钟。

谢谢!

Kar*_*raj 7

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

据我记得,它是单线程的,因此在处理完另一个请求之前它无法开始处理一个请求。

解决方案:

  1. 如果您使用更加面向生产的 WSGI 服务器(例如 uwsgi),则可以将其设置为一次服务多个请求。尝试 Django 文档中的教程:How to use Djanog with uwsgi
  2. 如果您使用gunicorn,您可以增加工作程序和线程的数量,或者将工作程序类切换为非阻塞类geventeventlethttp://docs.gunicorn.org/en/stable/settings.html#id75)。对于工作线程数和线程,默认值均为 1,这意味着默认情况下您会获得 1 个请求的并发性。
  3. 您还可以为此使用任务队列。大多数人都用芹菜