Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Aiohttp:关于会话对象的实用程序_Python_Aiohttp - Fatal编程技术网

Python Aiohttp:关于会话对象的实用程序

Python Aiohttp:关于会话对象的实用程序,python,aiohttp,Python,Aiohttp,下面是一段从交互式经纪人网站上获取链接的代码 在aiohttp的例子中,他们说要始终使用aiohttp.ClientSession()对象,以便从一个请求到另一个请求重用“会话”。但是我可以从多个请求示例()中看到,每个请求创建一个会话。。。?那么会话对象的兴趣是什么 import asyncio from aiohttp import ClientSession exchanges_by_locs=[] inst_type_dicts=[] async def inst_types(url)

下面是一段从交互式经纪人网站上获取链接的代码

在aiohttp的例子中,他们说要始终使用aiohttp.ClientSession()对象,以便从一个请求到另一个请求重用“会话”。但是我可以从多个请求示例()中看到,每个请求创建一个会话。。。?那么会话对象的兴趣是什么

import asyncio
from aiohttp import ClientSession

exchanges_by_locs=[]
inst_type_dicts=[]
async def inst_types(url):
    async with ClientSession() as session:
        async with session.get(url) as response:
            response = await response.text()
            html = lxml.html.fromstring(response)
            p=html.xpath('//*[@id="toptabs"]/ul/li')
            for e in p:
                inst=dict(inst_type=e.find('a/span').text, 
                          url='https://www.interactivebrokers.com'+e.find('a').attrib['href'])
                inst_type_dicts.append(inst)

async def inst_by_loc(inst):
    url=inst['url']
    print("start: ",inst['inst_type'])
    async with ClientSession() as session:
        async with session.get(url) as response:
            doc = requests.get(url).content
            html = lxml.html.fromstring(doc)
            p=html.xpath('//*[@class="subtabsmenu"]/li')    
            for e in p:
                exchanges_by_loc=dict(loc=e.find('a/span').text, 
                          loc_url='https://www.interactivebrokers.com'+e.find('a').attrib['href'])
                exchanges_by_locs.append(exchanges_by_loc)
            print("complete: ",inst['inst_type'])

loop = asyncio.get_event_loop()
loop.run_until_complete(inst_types(url))
loop.run_until_complete(
    asyncio.gather(
        *(inst_by_loc(inst) for inst in inst_type_dicts)
    )
)

aiohttp的维护人员建议尽可能重新使用会话对象。这是一个小的性能技巧。

显然,维护人员自己不知道如何创建持久会话。