我想使用 asyncio 和 aiohttp 进行异步请求。我需要在标头中添加 x api 密钥(但它显示错误)
File "C:\Users\**********\main.py", line 22, in main
tasks.append(asyncio.ensure_future(get_ids(session, url, headers)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: get_ids() takes 2 positional arguments but 3 were given
而且我也不知道我的代码是否正确。您能检查一下并帮助我吗?我是异步新手。
import aiohttp
import asyncio
import time
start_time = time.time()
async def get_ids(session, url):
async with session.get(url) as resp:
id_list = await resp.json()
return id_list['results']
async def main():
async with aiohttp.ClientSession() as session:
tasks = []
for number in range(1, 2000):
headers = {"x-api-key": '**********************'}
url = f'https://******************/rest/api/v1/Candidates?start={number}&limit=1'
tasks.append(asyncio.ensure_future(get_ids(session, url, headers)))
original_id_list = await asyncio.gather(*tasks)
for id_list in original_id_list:
print(id_list)
asyncio.run(main())
print("--- %s seconds ---" % (time.time() - start_time))
函数 get_ids 将 session 和 url 作为位置参数,但不接受 headers。 在 get_ids 函数中尝试这样的事情:
async def get_ids(session, url, headers):
之后,在函数内使用标头。