add customisable timeout buffer with env variable

This commit is contained in:
2026-04-03 21:23:18 +02:00
parent 8f6bc3cfdd
commit fb579e5fbc
+11 -1
View File
@@ -37,6 +37,7 @@ class BestBattleSnake(TemplateSnake):
self.last_game_id = None self.last_game_id = None
self.previous_hazards = set() self.previous_hazards = set()
self.duel_style = self._get_duel_style() self.duel_style = self._get_duel_style()
self.timeout_buffer_ms = self._get_timeout_buffer_ms()
def _get_duel_style(self) -> str: def _get_duel_style(self) -> str:
"""Resolve duel tuning style from `BATTLE_SNAKE_DUEL_STYLE` or `DUEL_STYLE`.""" """Resolve duel tuning style from `BATTLE_SNAKE_DUEL_STYLE` or `DUEL_STYLE`."""
@@ -69,6 +70,14 @@ class BestBattleSnake(TemplateSnake):
"food_bias": 1.00, "food_bias": 1.00,
} }
def _get_timeout_buffer_ms(self) -> int:
"""Read response-time safety buffer from `SNAKE_TIMEOUT_BUFFER_MS`."""
raw_value = os.getenv("SNAKE_TIMEOUT_BUFFER_MS", "120")
try:
return max(25, int(raw_value))
except ValueError:
return 120
def choose_move(self, game_data:dict) -> str: def choose_move(self, game_data:dict) -> str:
"""Pick the next move from a Battlesnake move request. """Pick the next move from a Battlesnake move request.
@@ -77,8 +86,9 @@ class BestBattleSnake(TemplateSnake):
self.game_board = game_data self.game_board = game_data
self.calculations = [] self.calculations = []
self.duel_style = self._get_duel_style() self.duel_style = self._get_duel_style()
self.timeout_buffer_ms = self._get_timeout_buffer_ms()
timeout_ms = (game_data.get_timeout() if hasattr(game_data, "get_timeout") else 500) timeout_ms = (game_data.get_timeout() if hasattr(game_data, "get_timeout") else 500)
deadline = perf_counter() + (max(50, int(timeout_ms) - 120) / 1000.0) deadline = perf_counter() + (max(50, int(timeout_ms) - self.timeout_buffer_ms) / 1000.0)
game_id = getattr(game_data, "id", None) game_id = getattr(game_data, "id", None)
turn = game_data.get_turn() turn = game_data.get_turn()