0

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
4

1 に答える 1