不好:FastApi 响应问题
我使用fastapi框架创建api,并且已经部署在heroku上,这个api的主要功能是我必须每10秒发送(post方法)元素作为查询参数,并且我创建路径来显示发送的所有元素,但我在刷新时遇到问题页面我没有收到发送的所有元素,例如如果我发送 [1, 2, 3, 4, 5, 6, 7, 8, 9] 有时我会得到 [1, 3, 4, 5, 7, 9] 有时我得到 [2, 6, 8], 但在本地我有 api 完美运行。
from fastapi import FastAPI
app = FastAPI()
hr = []
@app.get("/")
async def api_status():
return {"message": "api running"}
@app.get("/hr")
async def show_hr_values():
if hr:
return hr
return {"message": "hr empty"}
@app.post("/hr")
async def add_hr_value(hr_value: int):
hr.append(hr_value)
return {"message": f"hr = {hr_value} added"}
i create api using fastapi framework and i have deployed on heroku, the main function of this api is i have to send (post method) element as query parameter every 10s and i create path to show all elements sent but i facing problem when i refresh page i didn't get all element sent for example if i send [1, 2, 3, 4, 5, 6, 7, 8, 9] sometimes i get [1, 3, 4, 5, 7, 9] and sometimes i get [2, 6, 8],
but in local i have api run perfectly.
from fastapi import FastAPI
app = FastAPI()
hr = []
@app.get("/")
async def api_status():
return {"message": "api running"}
@app.get("/hr")
async def show_hr_values():
if hr:
return hr
return {"message": "hr empty"}
@app.post("/hr")
async def add_hr_value(hr_value: int):
hr.append(hr_value)
return {"message": f"hr = {hr_value} added"}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Heroku 不会将您的应用程序作为一个进程来运行。由于您将此数据保存在内存中,因此它只会在接收您的请求的进程中更新和保存。
请使用数据库或 KV 存储来存储数据,以便将其存储在所有进程都可以与之通信的集中位置。 Heroku 支持托管 postgres 和 redis,您可以将它们用于这些用例中的任何一个。
Heroku will not run your application as just one process. Since you're keeping this data in memory, it will only be updated and kept in that process that receives your request.
Use a database or KV store to store your data instead, so that it's stored in a centralized location that all processes can talk to. Heroku supports managed postgres and redis that you can use for either of these use cases.