Django 实现 接口异步 和 内部接口异步

说明:

        本人对:

                接口异步 和 内部接口异步 的理解

        接口异步:
                         允许多人同时请求接口。
         内部接口异步:

                                             查询语句有两条,每条语句time.sleep(3)停止3秒在进行查询

                                                实现的效果是,总共睡3秒出来两条查询语句的结果,而不是总        

                                                共 睡6秒才出查询结果。

1.首先Django版本最低必须在4.1

2.在创建Django项目的时候,会自动带有asgi.py文件,如果没有,则可以自动创建asgi.py文件

asgi.py的配置内容:

                (1)自动生成asgi.py文件的不用加入,没有的自动复制加入代码块,在setting的APP中注册channels

                

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', '自己项目名.settings')

application = get_asgi_application()

  3.setting.py的配置项

                

1.把    WSGI_APPLICATION    注释掉
# WSGI_APPLICATION = 'taskout.wsgi.application'

2.添加    ASGI_APPLICATION = '项目名,asgi.application'
ASGI_APPLICATION = 'taskout.asgi.application'

现在已经实现接口异步了,还没实现内部接口异步

4.async  和   await是成套使用的

from django.http import HttpResponse
from asyncio import sleep,get_event_loop                        # get_event_loop是存放任务的地方 (1,2)
import time #(1,2)



async def page_pay_return(request):
    loop = get_event_loop()                 #实例化一个对象
    start = int(time.time())
    slp1 = loop.create_task(sleep(3))       #加入到任务队列里面,就是一个任务池
    print(1)
    slp = loop.create_task(sleep(3))
    print(2)
    #把任务添加到 任务池中
    await slp                                 #调用  slp任务
    await slp1                                #调用  slp任务
    end = int(time.time())

    return HttpResponse(f"开始{start}结束{end}")

当代码执行到第一个await时,发现时异步任务,此时,他就会去任务队列里找别的任务进行执行

5.此时已经实现接口异步和内部接口异步

6.了解完,发现实现一次内部接口异步就要添加一次  loop.create_task(sleep(3))  任务和执行一次   await slp   任务,让后可以自行封装使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值