Packages
exq
0.10.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/middleware/stats.ex
defmodule Exq.Middleware.Stats do
@behaviour Exq.Middleware.Behaviour
require Logger
alias Exq.Stats.Server, as: Stats
alias Exq.Middleware.Pipeline
import Pipeline
def before_work(pipeline) do
{:ok, info} = add_process(pipeline)
assign(pipeline, :process_info, info)
end
def after_processed_work(pipeline) do
pipeline |> process_terminated |> record_processed
end
def after_failed_work(pipeline) do
pipeline |> process_terminated |> record_failure
end
defp add_process(%Pipeline{assigns: assigns, worker_pid: worker_pid}) do
Stats.add_process(assigns.stats, assigns.namespace, worker_pid, assigns.host, assigns.job_serialized)
end
defp process_terminated(%Pipeline{assigns: assigns} = pipeline) do
Stats.process_terminated(assigns.stats, assigns.namespace, assigns.process_info)
pipeline
end
defp record_processed(%Pipeline{assigns: assigns} = pipeline) do
Stats.record_processed(assigns.stats, assigns.namespace, assigns.job)
pipeline
end
defp record_failure(%Pipeline{assigns: assigns} = pipeline) do
Stats.record_failure(assigns.stats, assigns.namespace, to_string(assigns.error_message),
assigns.job)
pipeline
end
end