gpt4 book ai didi

django 3.0 异步 orm

转载 作者:行者123 更新时间:2023-12-04 04:20:47 24 4
gpt4 key购买 nike

由于 django 3.0 支持异步,我想知道数据库查询会发生什么。我在 the official documentation 中没有看到任何更新我确定语法是这样的:

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

将完全阻塞当前线程,哪个事件循环正在运行它。如果数据库在 20 秒内返回响应,那么在此期间将不会处理其他请求,这很糟糕。

另一件让我感到疑惑的事情:async 只使用一个线程(如果我们至少不在 thread-executor 中等待的话)。这是事实:原子(数据库)请求绑定(bind)到数据库的连接,而数据库连接绑定(bind)到线程局部变量。这意味着所有请求都将在单个线程中运行 = 所有请求都将具有相同的事务。

最佳答案

正如 Willem 所说,它是按请求异步的。 asgi 的不同之处在于,在单个请求中它可以更快地解决,因为在请求中它也是异步的。例如,在 BD 上咨询或在网络上咨询资源时。的确,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 异步 orm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59422243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com