python aiohttp_python aiohttp asyncio 异步请求

# _*_ coding: utf-8 _*_

"""

python_aiohttp.py by xianhu

"""

import asyncio

import aiohttp

# 简单实例

async def aiohttp_test01(url):

async with aiohttp.ClientSession() as session:

async with session.get(url) as resp:

print(resp.status)

print(await resp.text())

loop = asyncio.get_event_loop()

tasks = [aiohttp_test01("https://api.github.com/events")]

loop.run_until_complete(asyncio.wait(tasks))

loop.close()

# 其他Http方法

# session.post('http://httpbin.org/post', data=b'data')

# session.put('http://httpbin.org/put', data=b'data')

# session.delete('http://httpbin.org/delete')

# session.head('http://httpbin.org/get')

# session.options('http://httpbin.org/get')

# session.patch('http://httpbin.org/patch', data=b'data')

# 自定义Headers

# payload = {'some': 'data'}

# headers = {'content-type': 'application/json'}

# await session.post(url, data=json.dumps(payload), headers=headers)

# 自定义Cookie

# cookies = {'cookies_are': 'working'}

# async with ClientSession(cookies=cookies) as session:

# 访问Cookie: session.cookie_jar

# 在URLs中传递参数

# 1. params = {'key1': 'value1', 'key2': 'value2'}

# 2. params = [('key', 'value1'), ('key', 'value2')]

# async with session.get('http://httpbin.org/get', params=params) as resp:

# assert resp.url == 'http://httpbin.org/get?key2=value2&key1=value1'

# 发送数据

# payload = {'key1': 'value1', 'key2': 'value2'}

# async with session.post('http://httpbin.org/post', data=payload) as resp:

# async with session.post(url, data=json.dumps(payload)) as resp:

# print(await resp.text())

# 发送文件(1)

# files = {'file': open('report.xls', 'rb')}

# await session.post(url, data=files)

# 发送数据(2)

# data = FormData()

# data.add_field('file',

# open('report.xls', 'rb'),

# filename='report.xls',

# content_type='application/vnd.ms-excel')

# await session.post(url, data=data)

# 超时设置

# aync with session.get('https://github.com', timeout=60) as r:

# 代理支持

# async with aiohttp.ClientSession() as session:

# async with session.get("http://python.org", proxy="http://some.proxy.com") as resp:

# print(resp.status)

# async with aiohttp.ClientSession() as session:

# proxy_auth = aiohttp.BasicAuth('user', 'pass')

# async with session.get("http://python.org", proxy="http://some.proxy.com", proxy_auth=proxy_auth) as resp:

# print(resp.status)

# session.get("http://python.org", proxy="http://user:pass@some.proxy.com")

# 返回的内容

# async with session.get('https://api.github.com/events') as resp:

# print(await resp.text())

# print(await resp.text(encoding='gbk'))

# print(await resp.read())

# print(await resp.json())

# 返回内容较大

# with open(filename, 'wb') as fd:

# while True:

# chunk = await resp.content.read(chunk_size)

# if not chunk:

# break

# fd.write(chunk)

# 返回的其他变量

# async with session.get('http://httpbin.org/get') as resp:

# print(resp.status) # 状态码

# print(resp.headers) # Headers

# print(resp.raw_headers) # 原始Headers

# print(resp.cookies) # 返回的Cookie

# 访问历史History

# resp = await session.get('http://example.com/some/redirect/')

# resp:

# resp.history: (,)

# 释放返回的Response

# 1. async with session.get(url) as resp: pass

# 2. await resp.release()

# 连接器: Connectors

# conn = aiohttp.TCPConnector()

# session = aiohttp.ClientSession(connector=conn)

# 限制连接池大小:

# conn = aiohttp.TCPConnector(limit=30)

# conn = aiohttp.TCPConnector(limit=None)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值