Project

bg_results

0.0
No commit activity in last 3 years
No release in over 3 years
A tool for handling results from background workers
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16
~> 0.7
~> 5.0
~> 10.0

Runtime

 Project Readme

BgResults

A simple tool for collecting results from background job batches. Results returned from the jobs are stored in a Redis hash.

Currently Sidekiq is supported using the 3rd party batch gem, but it should work with Sidekiq pro as well. Worker modules for other queue systems can easily be added to support different providers.

Installation

Add this line to your application's Gemfile:

gem 'bg_results'

And then execute:

$ bundle

Or install it yourself as:

$ gem install bg_results

Usage

Configure Redis

A Redis connection pool is maintained to support flexibility from queue provider.

Redis can be configured using the REDIS_URL environment variable.

Otherwise you can supply your own connection pool or use Sidekiq's.

BgResults.redis_pool = your_pool || Sidekiq.redis_pool

Data

Results are stored in redis as JSON strings. Any datatype valid in JSON will work.

Workers

To enable results in a sidekiq worker prepend BgResults::Workers::Sidekiq and the return value of perform will be collected.

class ResultsJobThe
  include Sidekiq::Worker
  prepend BgResults::Worker::Sidekiq

  def perform
    result = background_task
  end
end

Collect results

Use the results batch object to access background results in the batch callbacks. Results are identified by batch_id.

def on_success status, options
  batch_res = BgResults::Batch.new status.bid
end

All in one

Return all results in a hash with mapping {job_id => result}.

results = batch_res.results

Scan

Collect results in batches with redis scan.

batch_res.results_each do |job_id, result|
  puts result
end

Lifetime

Results are persisted for up to 24 hours after first access to allow for callback retry and debugging.

In order to prevent redis from filling up with large results they should be cleared manually upon success.

batch_res.clear_results!

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/bg_results.

License

The gem is available as open source under the terms of the MIT License.