Packages
exq
0.7.2
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/middleware/job.ex
defmodule Exq.Middleware.Job do
@behaviour Exq.Middleware.Behaviour
alias Exq.Redis.JobQueue
alias Exq.Middleware.Pipeline
import Pipeline
def before_work(pipeline) do
job = Exq.Support.Job.from_json(pipeline.assigns.job_json)
target = String.replace(job.class, "::", ".")
[mod | _func_or_empty] = Regex.split(~r/\//, target)
pipeline
|> assign(:job, job)
|> assign(:worker_module, String.to_atom("Elixir.#{mod}"))
end
def after_processed_work(pipeline) do
pipeline |> remove_job_from_backup
end
def after_failed_work(pipeline) do
pipeline |> retry_or_fail_job |> remove_job_from_backup
end
defp retry_or_fail_job(%Pipeline{assigns: assigns} = pipeline) do
if assigns.job do
JobQueue.retry_or_fail_job(assigns.redis, assigns.namespace, assigns.job,
to_string(assigns.error_message))
end
pipeline
end
def remove_job_from_backup(%Pipeline{assigns: assigns} = pipeline) do
JobQueue.remove_job_from_backup(assigns.redis, assigns.namespace, assigns.host, assigns.queue,
assigns.job_json)
pipeline
end
end