Newer
Older
go-algo-server / app.py
zhangyingjie on 6 Mar 1 KB 初版提交(本地测试版)
# main.py
import asyncio
from config import CAMERAS, TCP_SERVER, HTTP_SERVER, MODEL
from tcp_client import AsyncTCPClient
from http_client import AsyncHTTPClient
from model_wrapper import ModelWrapper
from camera_processor import CameraProcessor
from global_logger import logger


async def main():
    logger.info("开始启动算法分析服务")
    loop = asyncio.get_running_loop()  # 获取当前主线程的事件循环
    tcp_client = AsyncTCPClient(TCP_SERVER["host"], TCP_SERVER["port"])
    http_client = AsyncHTTPClient(HTTP_SERVER["url"], HTTP_SERVER["timeout"])

    # 启动 TCP 和 HTTP 的发送任务
    asyncio.create_task(tcp_client.send_loop())
    asyncio.create_task(http_client.send_loop())

    model_wrapper = ModelWrapper(MODEL["path"], MODEL["size"], MODEL["class_map"], MODEL["batch_size"])

    # 为每个摄像头启动一个处理线程,并传入事件循环
    for camera_config in CAMERAS:
        camera_thread = CameraProcessor(camera_config, model_wrapper, tcp_client, http_client, loop,
                                        MODEL["batch_size"])
        camera_thread.start()

    while True:
        await asyncio.sleep(1)


if __name__ == '__main__':
    asyncio.run(main())