View Source Oban.Plugins.Pruner (Oban v2.14.0)

Periodically delete completed, cancelled and discarded jobs based on age.

using-the-plugin

Using the Plugin

The following example demonstrates using the plugin without any configuration, which will prune jobs older than the default of 60 seconds:

config :my_app, Oban,
  plugins: [Oban.Plugins.Pruner],
  ...

Override the default options to prune jobs after 5 minutes:

config :my_app, Oban,
  plugins: [{Oban.Plugins.Pruner, max_age: 300}],
  ...

🌟 DynamicPruner

To prune on a cron-style schedule, retain jobs by a limit, or provide overrides for specific queues, workers, and job states; see Oban Pro's DynamicPruner.

options

Options

  • :interval — the number of milliseconds between pruning attempts. The default is 30_000ms.

  • :limit — the maximum number of jobs to prune at one time. The default is 10,000 to prevent request timeouts. Applications that steadily generate more than 10k jobs a minute should increase this value.

  • :max_age — the number of seconds after which a job may be pruned. Defaults to 60s.

instrumenting-with-telemetry

Instrumenting with Telemetry

The Oban.Plugins.Pruner plugin adds the following metadata to the [:oban, :plugin, :stop] event:

  • :pruned_jobs - the jobs that were deleted from the database

Note: jobs only include id, queue, state, and worker fields.

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor.

Link to this section Types

@type option() ::
  Oban.Plugin.option() | {:limit, pos_integer()} | {:max_age, pos_integer()}

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.