|
|
|
@ -130,12 +130,19 @@ class MeshApi(MeshArgsParse): |
|
|
|
super().__init__(args) |
|
|
|
self.app = FastAPI(lifespan=self.lifespan) |
|
|
|
self.tasks = [] |
|
|
|
self.listeners = [] #[{"func": func, "args":[]}] |
|
|
|
from authManager import AuthManager |
|
|
|
self.authManager = AuthManager(args) |
|
|
|
|
|
|
|
@asynccontextmanager |
|
|
|
async def lifespan(self, app: FastAPI): |
|
|
|
logger.info("web started, now create bg tasks") |
|
|
|
logger.info("web started") |
|
|
|
|
|
|
|
logger.info("create mesh listeners") |
|
|
|
for listener in self.listeners: |
|
|
|
asyncio.create_task(listener["func"](*listener["args"])) |
|
|
|
|
|
|
|
logger.info("now create bg tasks") |
|
|
|
for task in self.tasks: |
|
|
|
asyncio.create_task(task()) |
|
|
|
yield |
|
|
|
@ -244,11 +251,10 @@ class MeshCenter(MeshMultiListener, MeshApi, MongoDriver, MeshArgsParse): |
|
|
|
traceback.print_exc() |
|
|
|
|
|
|
|
def buildBackgroundTasks(self): |
|
|
|
#input queue |
|
|
|
#input queue #[{"func": func, "args":[]}] |
|
|
|
for device in self.devices: |
|
|
|
async def mL(): |
|
|
|
await self.meshListener(device, self.queue) |
|
|
|
self.tasks.append(mL) |
|
|
|
logger.debug("Append mesh listener", device) |
|
|
|
self.listeners.append({"func": self.meshListener, "args":[device, self.queue]}) |
|
|
|
|
|
|
|
#output |
|
|
|
async def handlerTask(): |
|
|
|
|