python-aiohttp

瘦欲@ 提交于 2019-12-04 11:19:45

 

# _*_ coding: utf-8 _*_
   
  """
  转载别人的——xianhu
  """
   
  import asyncio
  import aiohttp
   
   
  # 简单实例
  async def aiohttp_01(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_01("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: <ClientResponse(http://example.com/some/other/url/) [200]>
  # resp.history: (<ClientResponse(http://example.com/some/redirect/) [301]>,)
   
  # 释放返回的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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!