Files
harmoney/broker/main.py
2025-02-28 17:44:53 +05:30

46 lines
1.3 KiB
Python

import asyncio
from typing import Dict
from uvicorn import Config, Server
import fastapi
from threading import Thread
from uvicorn.config import LOG_LEVELS
from callSpec import CallPacket
class Broker:
def __init__(self) -> None:
self.runnerQueue = []
self.router = fastapi.APIRouter()
self.router.add_api_websocket_route("/reg", self.registerRunner)
self.router.add_api_route("/cliReq", self.clientRequest, methods=["POST"])
self.taskQueue = asyncio.Queue()
async def registerRunner(self, wsConnection: fastapi.WebSocket):
await wsConnection.accept()
print("started")
while True:
data = await self.taskQueue.get()
# await asyncio.sleep(1)
await wsConnection.send_text(data)
print(await wsConnection.receive())
print(f"left: {self.taskQueue.qsize()}")
async def clientRequest(self, data:CallPacket):
print(data)
# await self.taskQueue.put(name)
def runBroker():
br = Broker()
app = fastapi.FastAPI()
app.include_router(br.router)
serverConf = Config(app = app, host="0.0.0.0", port=7732, log_level=LOG_LEVELS["trace"], ws_ping_interval=10, ws_ping_timeout=None)
server = Server(config=serverConf)
server.run()
runBroker()