Django 3.0异步法线 [英] django 3.0 async orm

查看:13
本文介绍了Django 3.0异步法线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于Django 3.0支持异步,我想知道数据库查询会发生什么情况。我在the official documentation中没有看到任何更新,我确信语法如下:

b5.name = 'New name'
b5.save()

将完全挡路当前线程,哪个事件循环正在运行它。如果数据库返回响应的时间为20秒,则在此期间不会处理其他令人讨厌的请求。

另一件让我想知道的事情是:异步只使用一个线程(如果我们至少不在线程执行器中等待)。事实是:原子(数据库)请求绑定到数据库连接,而数据库连接又绑定到线程本地变量。这意味着所有请求将在单个线程中运行=所有请求都将具有相同的事务。

推荐答案

正如威廉所说,它是按请求异步的。ASGI的不同之处在于,在单个请求中可以更快地解析它,因为在请求中它也是异步的。例如,当咨询BD或咨询Web上的资源时。 诚然,Django 3.0仍然缺乏完全异步的特性,要使用异步的好处,您必须使用Asgi库,方法是:sync_to_async和async_to_sync。 请查看本文档,以便您对其工作原理有所了解: https://channels.readthedocs.io/en/latest/topics/databases.html

以同样的方式,我分享了这个联盟,它很好地解释了并行性、异步和线程的所有差异。等。 https://fastapi.tiangolo.com/async/#asynchronous-code

这篇关于Django 3.0异步法线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆