Packages
exq
0.24.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
Exq is a job processing library compatible with Resque / Sidekiq for the Elixir language.
Current section
Files
Jump to
Current section
Files
lib/exq/support/redis.ex
defmodule Exq.Support.Redis do
require Logger
@doc """
Rescue GenServer timeout.
"""
def rescue_timeout(f, options \\ []) do
try do
f.()
catch
:exit, {:timeout, info} ->
Logger.info("Manager timeout occurred #{inspect(info)}")
Keyword.get(options, :timeout_return_value, nil)
end
end
def with_retry_on_connection_error(f, times) when times <= 0 do
f.()
end
def with_retry_on_connection_error(f, times) when times > 0 do
try do
case f.() do
{:error, %Redix.ConnectionError{} = exception} ->
Logger.error("Retrying redis connection error: #{inspect(exception)}")
with_retry_on_connection_error(f, times - 1)
result ->
result
end
rescue
exception in [Redix.ConnectionError] ->
Logger.error("Retrying redis connection error: #{inspect(exception)}")
with_retry_on_connection_error(f, times - 1)
end
end
end