3
非常に単純に、aiohttp
の非同期HTTPリクエストからの応答を二重キーなどの識別子に関連付けて、どのリクエストがどのリクエストに対応しているかを知ることができます。aiohttpリクエストとレスポンスの関連付け
たとえば、次の関数は、dict値1
,2
および3
が付いたURIを呼び出します。各結果に関連付けられたキーを返すように変更するにはどうすればよいですか?私は、要求があるを追跡できるようにする必要があります... asyncio
import asyncio
import aiohttp
items = {'a': '1', 'b': '2', 'c': '3'}
def async_requests(items):
async def fetch(item):
url = 'http://jsonplaceholder.typicode.com/posts/'
async with aiohttp.ClientSession() as session:
async with session.get(url + item) as response:
return await response.json()
async def run(loop):
tasks = []
for k, v in items.items():
task = asyncio.ensure_future(fetch(v))
tasks.append(task)
responses = await asyncio.gather(*tasks)
print(responses)
loop = asyncio.get_event_loop()
future = asyncio.ensure_future(run(loop))
loop.run_until_complete(future)
async_requests(items)
出力(省略)に精通している誰かのための疑いもなくは些細:(例)
[{'id': 2, ...}, {'id': 3, ...}, {'id': 1...}]
所望の出力:
{'b': {'id': 2, ...}, 'c': {'id': 3, ...}, 'a': {'id': 1, ...}}
ありがとう、これは私が後にしたものです。 'fetch()'ではなく 'main()'の中に 'ClientSession()'をオープンしていることがわかります。これは単なる優先事項ですか? –
@bedeabcより良い質問なぜここに複数のセッションが必要ですか? – jfs
@ j-f-sebastianありがとう、私はあなたのポイントを参照してください。私は次の記事のパターンを使用していました:http://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html –