Spaces:
Running
on
Zero
Running
on
Zero
from apscheduler.schedulers.background import BackgroundScheduler | |
from fastapi import FastAPI | |
from inference.core.env import METRICS_INTERVAL | |
from inference.core.version import __version__ | |
from inference.enterprise.device_manager.command_handler import ( | |
Command, | |
fetch_commands, | |
handle_command, | |
) | |
from inference.enterprise.device_manager.metrics_service import ( | |
report_metrics_and_handle_commands, | |
) | |
app = FastAPI( | |
title="Roboflow Device Manager", | |
description="The device manager enables remote control and monitoring of Roboflow inference server containers", | |
version=__version__, | |
terms_of_service="https://roboflow.com/terms", | |
contact={ | |
"name": "Roboflow Inc.", | |
"url": "https://roboflow.com/contact", | |
"email": "help@roboflow.com", | |
}, | |
license_info={ | |
"name": "Apache 2.0", | |
"url": "https://www.apache.org/licenses/LICENSE-2.0.html", | |
}, | |
root_path="/", | |
) | |
def root(): | |
return { | |
"name": "Roboflow Device Manager", | |
"version": __version__, | |
"terms_of_service": "https://roboflow.com/terms", | |
"contact": { | |
"name": "Roboflow Inc.", | |
"url": "https://roboflow.com/contact", | |
"email": "help@roboflow.com", | |
}, | |
"license_info": { | |
"name": "Apache 2.0", | |
"url": "https://www.apache.org/licenses/LICENSE-2.0.html", | |
}, | |
} | |
async def exec_command(command: Command): | |
handle_command(command.dict()) | |
return {"status": "ok"} | |
scheduler = BackgroundScheduler(job_defaults={"coalesce": True, "max_instances": 3}) | |
scheduler.add_job( | |
report_metrics_and_handle_commands, "interval", seconds=METRICS_INTERVAL | |
) | |
scheduler.add_job(fetch_commands, "interval", seconds=3) | |
scheduler.start() | |