python 异步框架 不能混用同步代码_Django是同步的还是异步的?

Django本身是同步的。在

每个HTTP请求将完全同步处理。在

但是,您有一些扩展,如django channels(https://github.com/django/channels),它们是异步的,用于web套接字/等等

这有点过于简单化了:但是同步编程是指如果您编写代码,从头到尾处理一个HTTP请求,并在线程或进程中执行,如果一个进程/一个线程一次只处理一个请求。在

对于python,特别是asyncio或twisted,可以编写这样的代码:一个进程/线程可以处理多个请求。等待一个新的数据块在网络上等待另一个数据块被发送出去。在

Django不使用twisted或asyncio。在

然而,新的web服务器web应用程序不仅可以处理http请求,还可以使用web套接字。django channels模块是为处理web套接字而构建的。它是用asyncio实现的,它只允许用一个进程处理多个web套接字。它将通过消息与django的同步部分进行交互(例如redis)

附录:正如@Sayse指出的,django3.0将支持异步代码。

然而:

只有在我理解的情况下,ORM操作仍然是同步的。它们将在异步事件循环中失败,并出现SynchronousOnlyOperation异常。因此,可能大多数真正的django视图都会失败,因为django的原因之一是使用ORM作为数据库访问.sections在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值