泰安58路,seo营销技巧,网上商城搭建,wordpress 管理员权限设置官方文档#xff1a;https://docs.djangoproject.com/en/3.2/releases/3.0/
Django 3.0 通过提供对作为ASGI应用程序运行的支持#xff0c;开始了我们使 Django 完全具有异步能力的旅程。
Django 3.1于2020年8月4日发布#xff01;从3.1版本开始#xff0c;Django将逐步原…官方文档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部署
除了 WSGIDjango 还支持在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:application1.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.UvicornWorker1.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