多个 aiohttp 会话
Multiple aiohttp sessions
有没有办法让每个 URL 都有自己的会话?我阅读了 Github 上的 aiohttp 文档,但我找不到这是否可行。我知道请求是可能的,但不确定如何使用 aiohttp 做到这一点。感谢您提供任何帮助,因为我一直无法找到答案。
sites = ['http://example.com/api/1', 'http://example.com/api/2']
async def fetch(session, site):
print('Fetching: ' + site)
async with session.get(site) as response:
return await response.text()
async def main():
t = []
async with aiohttp.ClientSession() as session:
for site in sites:
task = asyncio.create_task(fetch(session, site))
t.append(task)
await asyncio.gather(*t)
Is there a way for each URL have its own session?
是的,只需将会话创建移动到 fetch
协程中:
async def fetch(site):
print('Fetching: ' + site)
async with aiohttp.ClientSession() as session, \
session.get(site) as response:
return await response.text()
async def main():
t = []
for site in sites:
task = asyncio.create_task(fetch(site))
t.append(task)
await asyncio.gather(*t)
有没有办法让每个 URL 都有自己的会话?我阅读了 Github 上的 aiohttp 文档,但我找不到这是否可行。我知道请求是可能的,但不确定如何使用 aiohttp 做到这一点。感谢您提供任何帮助,因为我一直无法找到答案。
sites = ['http://example.com/api/1', 'http://example.com/api/2']
async def fetch(session, site):
print('Fetching: ' + site)
async with session.get(site) as response:
return await response.text()
async def main():
t = []
async with aiohttp.ClientSession() as session:
for site in sites:
task = asyncio.create_task(fetch(session, site))
t.append(task)
await asyncio.gather(*t)
Is there a way for each URL have its own session?
是的,只需将会话创建移动到 fetch
协程中:
async def fetch(site):
print('Fetching: ' + site)
async with aiohttp.ClientSession() as session, \
session.get(site) as response:
return await response.text()
async def main():
t = []
for site in sites:
task = asyncio.create_task(fetch(site))
t.append(task)
await asyncio.gather(*t)