由while循环不断获取的值的Python rest API端点



我在电能表上使用光学传感器。目前,我正在调用一个python脚本通过光学传感器每10秒获取新值。raspberry pi zero需要一些时间来启动python脚本(超过5秒)。

我想获取传感器数据现在每秒.

我想要的:

  • 启动脚本一次,使用while循环获取新的传感器数据,并在获取
  • 后休眠1秒
  • 提供最新值的rest API端点(uvicorn和fastapi?!)

也许我可以得到一些帮助,让我开始。谢谢。

你可以做的是为最后一个传感器读取一个变量,并使用FastAPI的异步特性来运行异步后台任务,该任务每秒更新该变量。asyncio.create_task可以用于此,您可以使用FastAPI的启动事件开始读取。

类似

的内容
import asyncio
from fastapi import FastAPI
app = FastAPI()
sensor_data = None
async def read_optical_sensor():
global sensor_data
while True:
sensor_data = ... # Read your sensor here, preferably in an async way
await asyncio.sleep(1)
@app.on_event("startup")
async def startup():
asyncio.create_task(read_optical_sensor())

@app.get("/read")
async def get_sensor_data():
return {"data": sensor_data}

相关内容

  • 没有找到相关文章

最新更新