我想使用 HTTPX(在 FastAPI 中,如果重要的话)向外部 API 发出异步 http 请求,并将响应存储为单独的变量,以便根据获取的 URL 以稍微不同的方式进行处理。我正在修改此StackOverflow 答案中的代码。
import asyncio
import httpx
async def perform_request(client, url):
response = await client.get(url)
return response.text
async def gather_tasks(*urls):
async with httpx.AsyncClient() as client:
tasks = [perform_request(client, url) for url in urls]
result = await asyncio.gather(*tasks)
return result
async def f():
url1 = "https://api.com/object=562"
url2 = "https://api.com/object=383"
url3 = "https://api.com/object=167"
url4 = "https://api.com/object=884"
result = await gather_tasks(url1, url2, url3, url4)
# print(result[0])
# print(result[1])
# DO THINGS WITH url2, SOMETHING ELSE WITH url4, ETC.
if __name__ == '__main__':
asyncio.run(f())
访问个人回复的最佳方式是什么?(如果我使用 result[n] 我不知道我正在使用哪个响应。)
而且我对 httpx 和一般的异步操作还很陌生,所以如果您对如何以更好的方式实现它有任何建议,请分享。