【发布时间】:2021-07-12 06:23:28
【问题描述】:
我必须为向其他 API 发送多个请求并将其响应合并为输出的 API 提供服务。
最理想的方法是什么?这是一些异步等待场景吗?感谢您的建议。
from fastapi import FastAPI
import requests
app = FastAPI()
@app.post('/api')
def main_api():
JScontent = json.loads(request.json())
input = JScontent['content']
response1 = requests.post(url1, json={"input":input})
response2 = requests.post(url2, json={"input":input})
response3 = requests.post(url3, json={"input":input})
response4 = requests.post(url4, json={"input":input})
prediction = fuse_responses(response1, response2, response3, response4)
return prediction
我目前正在使用 Flask 进行开发,但认为它可能没有能力,或者管理这样的场景会很麻烦,因此,愿意更改为 FastAPI。
[更新]
有没有发现这个link。我想它可以类似地应用于 FastAPI 吗?我之前没有异步和等待方面的经验,因此感谢您的验证。
from fastapi import FastAPI
app = FastAPI()
async def send_requests(url, input_):
res = await app.post(url, input_)
return res
@app.post('/api')
async def main_api():
JScontent = json.loads(request.json())
input_ = JScontent['content']
res1 = await send_requests(url1, input_)
res2 = await send_requests(url2, input_)
res3 = await send_requests(url3, input_)
res4 = await send_requests(url4, input_)
prediction = fuse_responses(res1, res2, res3, res4)
return prediction
【问题讨论】:
-
我猜你可以为每个请求创建一个线程。但请不要将您的变量命名为
input。 input 是 python 的内置函数。 -
你能举个例子吗?对不起,这仍然是菜鸟〜在输入上注明,我只是使用伪代码作为一个简单的例子
-
这里有一些示例可以帮助您入门:stackoverflow.com/questions/15752973/…
标签: python async-await fastapi