Packages
verk
1.2.0
1.7.3
1.7.2
1.7.1
1.7.0
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.2
1.0.1
1.0.0
0.14.1
0.14.0
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
Verk is a job processing system backed by Redis.
Current section
Files
Jump to
Current section
Files
lib/verk/job.ex
defmodule Verk.Job do
@moduledoc """
The Job struct
"""
@default_max_retry_count Confex.get_env(:verk, :max_retry_count, 25)
@keys [error_message: nil, failed_at: nil, retry_count: 0, queue: nil, class: nil, args: [],
jid: nil, finished_at: nil, enqueued_at: nil, retried_at: nil, error_backtrace: nil,
max_retry_count: @default_max_retry_count]
@type t :: %__MODULE__{error_message: String.t, failed_at: DateTime.t, retry_count: non_neg_integer,
queue: String.t, class: String.t | atom, jid: String.t, finished_at: DateTime.t,
retried_at: DateTime.t, error_backtrace: String.t}
@derive {Poison.Encoder, only: Keyword.keys(@keys)}
defstruct [:original_json | @keys]
@doc """
Decode the JSON payload storing the original json as part of the struct.
"""
@spec decode(binary) :: {:ok, %__MODULE__{}} | {:error, Poison.Error.t}
def decode(payload) do
case Poison.decode(payload, as: %__MODULE__{}) do
{:ok, job} -> {:ok, %Verk.Job{job | original_json: payload}}
{:error, error} -> {:error, error}
end
end
@doc """
Decode the JSON payload storing the original json as part of the struct, raising if there is an error
"""
@spec decode!(binary) :: %__MODULE__{}
def decode!(payload) do
job = Poison.decode!(payload, as: %__MODULE__{})
%Verk.Job{job | original_json: payload}
end
def default_max_retry_count do
@default_max_retry_count
end
end