我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python3 异步--aiohttp

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python3 异步--aiohttp

Python3 异步--aiohttp

asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例 如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。
asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。
我们先安装aiohttp:

pip install aiohttp

然后编写一个HTTP服务器,分别处理以下URL:

/ - 首页返回b'<h1>Index</h1>';

/hello/{name} - 根据URL参数返回文本hello, %s!。

代码如下:

import asyncio

from aiohttp import web

async def index(request):
    await asyncio.sleep(0.5)
    return web.Response(body=b'<h1>Index</h1>',  content_type='text/html)

async def hello(request):
    await asyncio.sleep(0.5)
    text = '<h1>hello, %s!</h1>' % request.match_info['name']
    return web.Response(body=text.encode('utf-8'),  content_type='text/html)

async def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', index)
    app.router.add_route('GET', '/hello/{name}', hello)
    srv = await loop.create_server(app.make_handler(), '127.0.0.1', 8000)
    print('Server started at http://127.0.0.1:8000...')
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

注意aiohttp的初始化函数init()也是一个coroutine,loop.create_server()则利用asyncio创建TCP服务。
本文转自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320981492785ba33cc96c524223b2ea4e444077708d000#0

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python3 异步--aiohttp

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python3 异步--aiohttp

Python3 异步--aiohttpasyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例 如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine
2023-01-31

如何利用aiohttp制作异步爬虫

这篇文章主要介绍“如何利用aiohttp制作异步爬虫”,在日常操作中,相信很多人在如何利用aiohttp制作异步爬虫问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何利用aiohttp制作异步爬虫”的疑惑有所
2023-06-17

Python3 异步IO--async/

Python3 异步IO--async/await用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个corouti
2023-01-31

Python3 异步IO--asynci

Python3 异步IO--asyncioasyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要
2023-01-31

Python3 异步IO--协程

Python3 异步IO--协程概念:协程,又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过
2023-01-31

python基于AioHttp异步抓取火星图片的案例

这篇文章主要介绍python基于AioHttp异步抓取火星图片的案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建aiohttp应用程序让我们从一个简单的应用程序开始,只是为了启动和运行aiohttp。首先,创建
2023-06-14

python3异步编程-实例

Python3 异步编程实例篇本篇主要内容:启动一个线程启动多线程获取线程名字让线程按顺序执行给线程加上日志线程类的实现线程锁多线程使用全局变量下锁的重要性锁嵌套的问题使用队列来存储线程数据取得线程中的线果多线程与非多线程性能对比多线程与非
2023-01-31

Python3爬虫利器:aiohttp怎么安装

这篇文章将为大家详细讲解有关Python3爬虫利器:aiohttp怎么安装,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对
2023-06-14

【Python3爬虫】使用异步协程编写爬

进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。进程是操作系统动态执行的基本单元。线程:一个进程中包含若干线程,当然至少有一个线程,线程可以利用进程所拥有的资源。线程是独立运行和独立调度的基本单元。协程:协程是一种用户态的
2023-01-30

简单有效上手Python3异步asyncio问题

这篇文章主要介绍了简单有效上手Python3异步asyncio问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-03

Python3 异步编程之进程与线程-1

Python3 异步编程之进程与线程-1一、了解进程间通信进程间通信进程线程线程 vs 进程IO模型并发 vs 并行异步 vs 同步二、多线程与多进程的用法计算密集型 vs I/O密集型GIL多线程多进程三、协程的好处与用法协程yieldy
2023-01-31

python3的异常类型

BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception      +-- StopIteration      +-- StopA
2023-01-31

python3的异常处理

在python运行的时候难免出现一些异常,但是python在遇到异常的时候就会停止了,但是有时候我们需要python即使在有异常的时候也需要继续向下运行,这个时候我们就需要用到异常处理了.1.简单的异常处理如:print(a)Traceba
2023-01-31

python3学习之异常

##异常处理#try:#    pass#except Exception as ex:   Exception(捕获所有错误)可以换成任何异常类型,代表只捕获指定错误,# 可以写多个except#    pass##异常类型:####完整
2023-01-31

Python3 异常与断言

1.异常当出现错误时,程序就会发生异常num1=input('Please input a num1: ')num2=input('Please input a num2: ')print(float(num1)/float(num2))输
2023-01-30

Python3 错误和异常

Edit笔记内容:Python3 错误和异常 笔记日期:2017-11-12Python3 错误和异常语法错误异常异常处理抛出异常用户自定义异常finally语句预定义的清理行为异常处理机制概述: 异常处理,是编程语言或计算机硬件里的一种机
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录