my-env / server /app.py
Maheswar01's picture
Add GET / health JSON for HF Space root requests
6ba758c
Raw
History Blame Contribute Delete
1.29 kB
"""
FastAPI app for Hugging Face Spaces / OpenEnv validators.
Run locally:
uvicorn server.app:app --host 0.0.0.0 --port 7860
HF Spaces set PORT (often 7860).
"""
from __future__ import annotations
import os
from openenv.core.env_server.http_server import create_app
from server.openenv_types import ScamEnvAction, ScamEnvObservation
from server.scam_openenv_environment import ScamOpenEnvEnvironment
# OpenEnv's HTTP handlers call the factory on every /reset and /step; use one instance
# so POST /step continues the same episode (OK for single-worker Spaces).
_shared: ScamOpenEnvEnvironment | None = None
def _scam_env_factory() -> ScamOpenEnvEnvironment:
global _shared
if _shared is None:
_shared = ScamOpenEnvEnvironment()
return _shared
app = create_app(
_scam_env_factory,
ScamEnvAction,
ScamEnvObservation,
env_name="scam-detection-env",
)
@app.get("/")
def root() -> dict[str, object]:
"""Spaces / browsers may request `/`; OpenEnv API is under /reset, /step, /state, /docs."""
return {"ok": True, "env": "scam-detection-env", "docs": "/docs"}
def main() -> None:
import uvicorn
port = int(os.environ.get("PORT", "7860"))
uvicorn.run(app, host="0.0.0.0", port=port)
if __name__ == "__main__":
main()