Corey Schafer のチュートリアルで発見したRequests-Htmlという新しいライブラリの探索を始めたところです。課題は、n 個の異なる requests の非同期呼び出しを作成することです。
たとえば、次のコードは約 3.6 秒で実行されます。
async def get_delay1():
r = await asession.get("https://httpbin.org/delay/1")
return r
async def get_delay2():
r = await asession.get("https://httpbin.org/delay/2")
return r
async def get_delay3():
r = await asession.get("https://httpbin.org/delay/3")
return r
asession = AsyncHTMLSession()
t1 = time.perf_counter()
results = asession.run(get_delay1, get_delay2, get_delay3)
for result in results:
response = result.html.url
print(response)
t2 = time.perf_counter()
print(t2 - t1)
問題は、このライブラリで 500 非同期リクエストを作成したい場合、どうすればよいですか? 500 の異なる関数をコーディングしなければならないということはあり得ませんよね?
関数ジェネレーターを使用してリストを作成しようとしたため、その中にn 個の異なる関数を自動的に渡すことができます。
tasks = [get_delay1, get_delay2, get_delay3]
results = asession.run(tasks)
しかし、私は
ERROR`:
asyncio.ensure_future(coro()) for coro in coros
TypeError: 'list' object is not callable