[英]Handling concurrent requests with Django API
我想用 DRF ( https://www.django-rest-framework.org/ ) 创建一个简单的 Rest API。 另一个服务将发出请求,并在其中提供 JSON。 这个 json 被解析,一些相当简单的 Pandas 数据框操作将发生。 结果通过 JSON 发回。
有没有办法使这个过程成为多线程的? 尽管 Pandas 操作相当简单,但它们仍然可能需要大约 0.5s-1s,如果由于某种原因在同一时刻发出 3-4 个这样的请求,我想避免人们等待几秒钟。
谢谢!
您是否使用YourAPIScript.py runserver
部署了您的 API?
据我所知,它是单线程的,因此在完成处理另一个请求之前,它无法开始处理一个请求。
解决方案:
gevent
或eventlet
( http://docs.gunicorn.org/en/stable/settings.html#id75 )。 对于工作线程数和线程数,默认值为 1,这意味着默认情况下您会获得 1 个请求的并发性。在我看来,避免用多线程解决这个问题可能是个好主意。 这样做可能会更好:
在我看来,在请求-响应过程中使用 Pandas 处理 JSON 不是您想要做的事情,它更适合异步任务架构。 今天可能需要 0.5-1 秒,但明天可能需要 10 秒并挂起您的应用程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.