diff --git a/config/config.exs b/config/config.exs index 2ad9b2a2..a8e4b749 100644 --- a/config/config.exs +++ b/config/config.exs @@ -13,6 +13,9 @@ config :battle_snake, BattleSnake.Endpoint, pubsub: [name: BattleSnake.PubSub, adapter: Phoenix.PubSub.PG2] + +config :battle_snake, start_timeout: 10_000 + # Configures Elixir's Logger config :logger, :console, format: "$time $metadata[$level] $message\n", diff --git a/lib/battle_snake/api.ex b/lib/battle_snake/api.ex index 4c6855a3..ef484754 100644 --- a/lib/battle_snake/api.ex +++ b/lib/battle_snake/api.ex @@ -11,6 +11,8 @@ defmodule BattleSnake.Api do require Logger + @start_timeout Application.get_env(:battle_snake, :start_timeout) + @callback load(%SnakeForm{}, %GameForm{}) :: Response.t @callback move(%Snake{}, %World{}) :: Response.t @callback request_move(%Snake{}, %World{}) :: HTTPoison.Response.t @@ -27,7 +29,7 @@ defmodule BattleSnake.Api do data = Poison.encode!(data) response = request_url - |> request.(data, ["content-type": "application/json"], []) + |> request.(data, ["content-type": "application/json"], [recv_timeout: @start_timeout]) |> Response.new(as: %{}) response = put_in(response.url, url) diff --git a/lib/battle_snake/game_form/reset.ex b/lib/battle_snake/game_form/reset.ex index 371ebc5d..1a996b7a 100644 --- a/lib/battle_snake/game_form/reset.ex +++ b/lib/battle_snake/game_form/reset.ex @@ -89,7 +89,7 @@ defmodule BattleSnake.GameForm.Reset do update_in(game_form.world.snakes, fn _ -> game_form.snakes - |> Task.async_stream(task) + |> Task.async_stream(task, [timeout: :infinity]) |> Enum.map(fn {:ok, snake} -> snake end) end) end