| | |
| | |
| | |
| | |
| | |
| |
|
| | """ |
| | FastAPI application for the Chess Environment. |
| | |
| | This module creates an HTTP server that exposes the ChessEnvironment |
| | over HTTP endpoints, making it compatible with HTTPEnvClient. |
| | |
| | Usage: |
| | # Development (with auto-reload): |
| | uvicorn server.app:app --reload --host 0.0.0.0 --port 8000 |
| | |
| | # Production: |
| | uvicorn server.app:app --host 0.0.0.0 --port 8000 --workers 4 |
| | |
| | # Or run directly: |
| | python -m server.app |
| | """ |
| |
|
| | try: |
| | from openenv_core.env_server.http_server import create_app |
| | except Exception as e: |
| | raise ImportError("openenv_core is required for the web interface. Install dependencies with '\n uv sync\n'") from e |
| |
|
| | from .my_game_environment import ChessEnvironment |
| | from models import ChessAction, ChessObservation |
| |
|
| | |
| | env = ChessEnvironment() |
| |
|
| | |
| | app = create_app( |
| | env, |
| | ChessAction, |
| | ChessObservation, |
| | env_name="chess", |
| | ) |
| |
|
| |
|
| | def main(host: str = "0.0.0.0", port: int = 8000): |
| | """ |
| | Entry point for direct execution via uv run or python -m. |
| | |
| | This function enables running the server without Docker: |
| | uv run --project . server |
| | uv run --project . server --port 8001 |
| | python -m my_game.server.app |
| | |
| | Args: |
| | host: Host address to bind to (default: "0.0.0.0") |
| | port: Port number to listen on (default: 8000) |
| | |
| | For production deployments, consider using uvicorn directly with |
| | multiple workers: |
| | uvicorn my_game.server.app:app --workers 4 |
| | """ |
| | import uvicorn |
| |
|
| | uvicorn.run(app, host=host, port=port) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | import argparse |
| |
|
| | parser = argparse.ArgumentParser() |
| | parser.add_argument("--port", type=int, default=8000) |
| | args = parser.parse_args() |
| | main(port=args.port) |
| |
|