Django3 --- async
官方文档: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相关推荐
- Django3(二)异步编程
目录 一.使用多线程 二.启用ASGI服务 三.异步视图 异步与同步的转换 其他:消息队列(基本概念) 异步编程:使用协程.线程.进程.消息队列等方式实现. Django支持多线程.内置异步和消息队列 ...
- Django3(三)FBV视图和CBV视图
一.FBV视图 视图函数处理HTTTP请求,在视图里定义函数为FBV. 设置响应方式 HTTP协议分为HTTP请求和HTTP响应. HTTP响应方式称为HTTP状态码,分5种状态:消息.成功.重定向. ...
- setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)
本文很长,列举的情况很多. 在阅读本文之前,如果您有充足的时间,请新建一个项目与本文一同实践. 每段代码都有对应的解释,但是自己动手尝试印象才会更深哦~ setInterval:表示多久执行一次,需要 ...
- 阮一峰老师的ES6入门:async 函数
async 函数 1. 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖. 前文有一个 Gener ...
- springboot 多线程_SpringBoot异步调用@Async
一. 什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行. 二. 如何实现异步调用 ...
- C++多线程:异步操作std::async和std::promise
文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...
- springboot之异步调用@Async
引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...
- JavaScript sync and async(同步和异步)
推荐四篇文章: JavaScript 是单线程的深入分析 JavaScript 运行机制详解:再谈 Event Loop JavaScript 异步编程的4种方法 JavaScript 既是单线程又是 ...
- C# async await 学习笔记2
C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...
最新文章
- 【jsp】使用get方法传值的格式
- shelve 序列化模块——day18
- 计算机网络:网络设备知识笔记
- JavaScript逻辑运算符的使用技巧
- Photoshop脚本 使用ExtendScript编写Ps脚本
- Codeforces Round #277 (Div. 2) 题解
- 每日站立会议 12.06
- 线性表之顺序存储结构相关算法学习
- 信息奥赛一本通(1099:第n小的质数)
- 在C#中使用JSON
- Kvaser—灵活多变的CAN总线接口方案
- PS完美抠取头发丝----更换证件照背景完美去白边/蓝边/红边-----超实用方法
- C#实现压缩文件及解压文件
- WebRoot和Web-Info区别
- 如何在xshell中导入xsh
- uni-app 汉字转拼音 搜索和按首字母排序页面
- Excel如何只保存筛选后的结果
- 第一章 教育基础(07 心理学基础知识)
- go gin增删改查上传文件下载文件
- 计算机网络常见问题归纳
热门文章
- python调用shell该引用到什么类_python调用shell, shell 引用python
- jdbctemplate 开启事务_Spring(四):事务管理
- 行业新闻 | 阿里发力知识图谱研究 悉数囊括顶尖学者探讨合作
- 基于深度学习的信息抽取技术
- 论文学习5-NODE2BITS: Compact Time- and Attribute-aware Node Representations for User Stitching
- 【NOIP模拟】健美猫
- DevExpress v18.1新版亮点——WPF篇(五)
- 团队二阶段冲刺个人工作总结2
- JQUERY AJAX无刷新异步上传文件
- div下图片自适应解决方法