import uvicorn from serial import Serial import threading from fastapi import FastAPI import json ser = Serial('COM6', 9600) data = {"value": 0} def read_data(): global data while True: incoming_data = ser.read(1) # read up to one byte try: data["value"] = int(incoming_data) except ValueError: pass app = FastAPI() def get_data(): return json.dumps(data) th = threading.Thread(target=read_data) th.start() @app.get("/") async def root(): return data if __name__ == "__main__": uvicorn.run(app, port=10000)