Giter Site home page Giter Site logo

sidekiq-batch's Introduction

Sidekiq::Batch

Join the chat at https://gitter.im/breamware/sidekiq-batch

Gem Version Build Status Code Climate Code Climate Code Climate

Simple Sidekiq Batch Job implementation.

Installation

Add this line to your application's Gemfile:

gem 'sidekiq-batch'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sidekiq-batch

Usage

Sidekiq Batch is MOSTLY a drop-in replacement for the API from Sidekiq PRO. See https://github.com/mperham/sidekiq/wiki/Batches for usage.

Caveats/Gotchas

Consider the following workflow:

  • Batch Z created
  • Worker A queued in batch Z
  • Worker A starts Worker B in batch Z
  • Worker B completes before worker A does
  • Worker A completes

In the standard configuration, the on(:success) and on(:complete) callbacks will be triggered when Worker B completes. This configuration is the default, simply for legacy reasons. This gem adds the following option to the sidekiq.yml options:

:batch_push_interval: 0

When this value is absent (aka legacy), Worker A will only push the increment of batch jobs (aka Worker B) when it completes

When this value is set to 0, Worker A will increment the count as soon as WorkerB.perform_async is called

When this value is a positive number, Worker A will wait a maximum of value-seconds before pushing the increment to redis, or until it's done, whichever comes first.

This comes into play if Worker A is queueing thousands of WorkerB jobs, or has some other reason for WorkerB to complete beforehand.

If you are queueing many WorkerB jobs, it is recommended to set this value to something like 3 to avoid thousands of calls to redis, and call WorkerB like so:

WorkerB.perform_in(4.seconds, some, args)

this will ensure that the batch callback does not get triggered until WorkerA and the last WorkerB job complete.

If WorkerA is just slow for whatever reason, setting to 0 will update the batch status immediately so that the callbacks don't fire.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/breamware/sidekiq-batch.

License

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

sidekiq-batch's People

Contributors

nglx avatar arjenbrandenburgh avatar jbrady42 avatar dependabot-preview[bot] avatar aleksclark avatar djgould avatar ya2kleet avatar warbot avatar ignaciovillaverde avatar darrhiggs avatar ekampp avatar petergoldstein avatar wolfer avatar gitter-badger avatar badlamer avatar kvokka avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.