Spaces:
Running
Running
File size: 1,464 Bytes
2b2ebe7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | """ASGI app entrypoint expected by openenv validate."""
from __future__ import annotations
import importlib.util
import os
import sys
from pathlib import Path
from typing import NoReturn
import uvicorn
def _load_impl_app() -> object:
"""Load FastAPI app from code-review-env/server.py."""
repo_root = Path(__file__).resolve().parents[1]
impl_root = repo_root / "code-review-env"
impl_server = impl_root / "server.py"
if not impl_server.exists():
raise RuntimeError("Implementation server not found at code-review-env/server.py")
if str(impl_root) not in sys.path:
sys.path.insert(0, str(impl_root))
spec = importlib.util.spec_from_file_location("code_review_env_impl_server", impl_server)
if spec is None or spec.loader is None:
raise RuntimeError("Failed to create module spec for implementation server")
module = importlib.util.module_from_spec(spec)
sys.modules["code_review_env_impl_server"] = module
spec.loader.exec_module(module)
if not hasattr(module, "app"):
raise RuntimeError("Implementation server module does not define app")
return getattr(module, "app")
app = _load_impl_app()
def main() -> NoReturn:
"""Run the ASGI app with uvicorn on port 7860."""
host = os.getenv("HOST", "0.0.0.0")
port = int(os.getenv("PORT", "7860"))
uvicorn.run("server:app", host=host, port=port)
raise SystemExit(0)
if __name__ == "__main__":
main()
|