|
import asyncio |
|
from threading import Thread |
|
|
|
from redis.asyncio import Redis as AsyncRedis |
|
|
|
from inference.core.env import REDIS_HOST, REDIS_PORT |
|
from inference.core.interfaces.http.http_api import HttpInterface |
|
from inference.core.registries.roboflow import RoboflowModelRegistry |
|
from inference.enterprise.parallel.dispatch_manager import ( |
|
DispatchModelManager, |
|
ResultsChecker, |
|
) |
|
from inference.models.utils import ROBOFLOW_MODEL_TYPES |
|
|
|
|
|
class ParallelHttpInterface(HttpInterface): |
|
def __init__(self, model_manager: DispatchModelManager, root_path: str = None): |
|
super().__init__(model_manager, root_path) |
|
|
|
@self.app.on_event("startup") |
|
async def app_startup(): |
|
model_registry = RoboflowModelRegistry(ROBOFLOW_MODEL_TYPES) |
|
checker = ResultsChecker(AsyncRedis(host=REDIS_HOST, port=REDIS_PORT)) |
|
self.model_manager = DispatchModelManager(model_registry, checker) |
|
self.model_manager.init_pingback() |
|
task = asyncio.create_task(self.model_manager.checker.loop()) |
|
|
|
self.checker_loop = task |
|
|