Giter VIP home page Giter VIP logo

lakh's Introduction

Lakh

Background job processing server in Rust loosely inspired by faktory, sidekiq and similar.

Features

  • immediate/scheduled/delayed jobs,
  • automatic job retry with exponential backoff,
  • job reservation (retry if status confirmation doesn't arrive within reservation time).

API

Lakh uses gRPC as its communication layer so that clients and workers can be implemented in any language without much friction. Proto definition is avalible here. Clients and workers are expected to send metadata entry named job_names with semicolon separated list of job names this worker/client is offering to do/wants someone to do. Example client and worker implementations are available here and here.

Notes

  • If job has no reservation time it is assumed it succeeds immediately after being sent and future status reports about it are ignored.
  • Failed job is automatically retried up to 30 times, after which it's considered dead and won't be attempted anymore.
  • Worker unavailability doesn't count as job failure.
  • Job is considered failed after receiving negative status report or after reservation time elapses and no status report was received during this time.
  • Only first status report about particular job is considered all subsequent reports are ignored. This means that if job was sent to many workers beacuse of (possibly numerous) reservation expirations we respect the first report we get regardless of wheter the worker reporting is the original one, latest one or any other that happend to receive this job.
  • If there are no available workers to do particular job, all incoming jobs will have to wait. Once required worker arrives all waiting jobs will be sent to it (therefore streaming large amounts of jobs while no workers are present is not recommended).

TODO

  • logging,
  • configuration,
  • introspection API,
  • persistence?

lakh's People

Contributors

hichuyamichu avatar

Watchers

 avatar  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.