File size: 976 Bytes
bf396bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aee9fc5
 
 
3daeb31
aee9fc5
 
84e2f6e
 
 
 
bf396bf
 
 
 
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
from openenv.core.env_server.http_server import create_app
from warehouse_env.models import WarehouseAction, WarehouseObservation
from warehouse_env.env import WarehouseEnv

# Singleton env instance — persists episode state between HTTP reset/step calls
# Using lambda: _env_instance so create_app factory pattern is satisfied
# per research Pitfall 5: fresh env per request loses episode state
_env_instance = WarehouseEnv()

app = create_app(
    lambda: _env_instance,
    WarehouseAction,
    WarehouseObservation,
    env_name="warehouse_env",
    max_concurrent_envs=1,
)


# Health check endpoint for Cloud Run startup probes and monitoring
@app.get("/health")
def health():
    return {"status": "healthy"}


def main(host: str = "0.0.0.0", port: int | None = None):
    import os, uvicorn
    resolved_port = port if port is not None else int(os.environ.get("PORT", 7860))
    uvicorn.run(app, host=host, port=resolved_port)


if __name__ == "__main__":
    main()