官方文档:https://docs.djangoproject.com/en/3.2/releases/3.0/

Django 3.0 通过提供对作为ASGI应用程序运行的支持,开始了我们使 Django 完全具有异步能力的旅程。

Django 3.1于2020年8月4日发布!从3.1版本开始,Django将逐步原生支持异步,比如异步视图和中间件。

python兼容性:

​ Django 3.1 支持 Python 3.6、3.7、3.8 和 3.9(从 3.1.3 开始)。官方强烈推荐并且只正式支持每个系列的最新版本

从创建Django项目目录来看,可以看出多出一个 asgi.py 文件,:

asgi.py,从django.core.asgi 中导入 get_asgi_application ,支持异步

import osfrom django.core.asgi import get_asgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django3_asyncio.settings')application = get_asgi_application()

wsgi.py , 从django.core.wsgi 中导入 get_wsgi_application,多线程

import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django3_asyncio.settings')application = get_wsgi_application()

注意:两者只是导入不同的方法。然后用不同的方式启动项目

1. 异步视图

1.1 async def

要开始使用异步视图,您需要使用以下命令声明一个视图 :async def

import asyncio
from django.http import HttpResponseasync def my_view(request):await asyncio.sleep(3)return HttpResponse('Hello Django asyncio!')

1.2 ASGI部署

除了 WSGI,Django 还支持在ASGI 上部署,ASGI是用于异步 Web 服务器和应用程序的新兴 Python 标准 。

Django 的startproject管理命令会为您设置默认的 ASGI 配置 。

1.2.1 Daphne

当前的 ASGI 参考服务器,用 Twisted 编写并作为 Django Channels 项目的一部分进行维护。支持 HTTP/1、HTTP/2 和 WebSockets。

安装:

pip install daphne

启动项目:

# 进入项目目录,确保从与您的manage.py文件相同的目录中运行此命令。
daphne <项目名称>.asgi:application

1.2.2 Uvicorn

基于 uvloop 和 httptools 的快速 ASGI 服务器。支持 HTTP/1 和 WebSockets。

安装:

pip install uvicorn gunicorn

启动项目:

​ 安装 Uvicorn 后,可以使用一个uvicorn命令来运行 ASGI 应用程序。Uvicorn 需要使用包含 ASGI 应用程序对象的模块的位置来调用,然后是应用程序的名称(用冒号分隔)。

# 进入项目目录,确保从与您的manage.py文件相同的目录中运行此命令。
gunicorn myproject.asgi:application -k uvicorn.workers.UvicornWorker

1.2.3 Hypercorn

基于 sans-io hyper、h11、h2 和 wsproto 库的 ASGI 服务器。支持 HTTP/1、HTTP/2 和 WebSockets。

安装:

pip install hypercorn

启动项目:

​ 安装 Hypercorn 后,hypercorn可以使用运行 ASGI 应用程序的命令。Hypercorn 需要使用包含 ASGI 应用程序对象的模块的位置来调用,然后是应用程序的名称(用冒号分隔)。

# 进入项目目录,确保从与您的manage.py文件相同的目录中运行此命令。
hypercorn myproject.asgi:application

Django3 --- async相关推荐

  1. Django3(二)异步编程

    目录 一.使用多线程 二.启用ASGI服务 三.异步视图 异步与同步的转换 其他:消息队列(基本概念) 异步编程:使用协程.线程.进程.消息队列等方式实现. Django支持多线程.内置异步和消息队列 ...

  2. Django3(三)FBV视图和CBV视图

    一.FBV视图 视图函数处理HTTTP请求,在视图里定义函数为FBV. 设置响应方式 HTTP协议分为HTTP请求和HTTP响应. HTTP响应方式称为HTTP状态码,分5种状态:消息.成功.重定向. ...

  3. setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)

    本文很长,列举的情况很多. 在阅读本文之前,如果您有充足的时间,请新建一个项目与本文一同实践. 每段代码都有对应的解释,但是自己动手尝试印象才会更深哦~ setInterval:表示多久执行一次,需要 ...

  4. 阮一峰老师的ES6入门:async 函数

    async 函数 1. 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖. 前文有一个 Gener ...

  5. springboot 多线程_SpringBoot异步调用@Async

    一. 什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行. 二. 如何实现异步调用 ...

  6. C++多线程:异步操作std::async和std::promise

    文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...

  7. springboot之异步调用@Async

    引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...

  8. JavaScript sync and async(同步和异步)

    推荐四篇文章: JavaScript 是单线程的深入分析 JavaScript 运行机制详解:再谈 Event Loop JavaScript 异步编程的4种方法 JavaScript 既是单线程又是 ...

  9. C# async await 学习笔记2

    C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...

最新文章

  1. 【jsp】使用get方法传值的格式
  2. shelve 序列化模块——day18
  3. 计算机网络:网络设备知识笔记
  4. JavaScript逻辑运算符的使用技巧
  5. Photoshop脚本 使用ExtendScript编写Ps脚本
  6. Codeforces Round #277 (Div. 2) 题解
  7. 每日站立会议 12.06
  8. 线性表之顺序存储结构相关算法学习
  9. 信息奥赛一本通(1099:第n小的质数)
  10. 在C#中使用JSON
  11. Kvaser—灵活多变的CAN总线接口方案
  12. PS完美抠取头发丝----更换证件照背景完美去白边/蓝边/红边-----超实用方法
  13. C#实现压缩文件及解压文件
  14. WebRoot和Web-Info区别
  15. 如何在xshell中导入xsh
  16. uni-app 汉字转拼音 搜索和按首字母排序页面
  17. Excel如何只保存筛选后的结果
  18. 第一章 教育基础(07 心理学基础知识)
  19. go gin增删改查上传文件下载文件
  20. 计算机网络常见问题归纳

热门文章

  1. python调用shell该引用到什么类_python调用shell, shell 引用python
  2. jdbctemplate 开启事务_Spring(四):事务管理
  3. 行业新闻 | 阿里发力知识图谱研究 悉数囊括顶尖学者探讨合作
  4. 基于深度学习的信息抽取技术
  5. 论文学习5-NODE2BITS: Compact Time- and Attribute-aware Node Representations for User Stitching
  6. 【NOIP模拟】健美猫
  7. DevExpress v18.1新版亮点——WPF篇(五)
  8. 团队二阶段冲刺个人工作总结2
  9. JQUERY AJAX无刷新异步上传文件
  10. div下图片自适应解决方法