Git Product home page Git Product logo

fastlane's Introduction

fastlane

github repo Build Status Codacy Badge Docs Codacy Badge BCH compliance Issues

demo

fastlane service

fastlane is a redis-based queueing service that outsmarts everyone else by using containers.

More seriously, though, fastlane allows you to easily implement new workers in the form of containers.

Instead of the tedious, repetitive work of yesteryear where you had to implement a worker in language X or Y, you just spin a new container with all the dependencies you require already previously installed, and instruct fastlane to run a command in that container. Bang! Instant Super-Powered Workers!

Features

  • Ad-Hoc execution of jobs (run job right now)
  • Scheduled execution of jobs (run job next sunday at 6am, or run in 10 minutes from now);
  • Crontab execution of jobs (run job at */10 * * * * - every ten minutes);
  • Allows job details to be updated;
  • API to retrieve tasks, /tasks;
  • API to retrieve task details, /tasks/my-task (<taskUrl>);
  • API to retrieve job details, <taskUrl>/jobs/<jobId> (<jobUrl>);
  • API to stop running job (<jobUrl>/stop);
  • API to retry job (<jobUrl>/retry);
  • API to get logs(<jobUrl>/logs), stdout (<jobUrl>/stdout) and stderr (<jobUrl>/stderr) for last execution in jobs;
  • Job log output streaming using WebSockets (ws://<jobUrl>/ws) and <jobUrl>/stream;
  • API to retrieve execution details, <jobUrl>/executions/<executionId> (<executionUrl>);
  • API to stop execution, <executionUrl>/stop;
  • API to get logs(<executionUrl>/stdout), stdout (<executionUrl>/stdout) and stderr (<executionUrl>/stderr) for execution;
  • Job execution log output streaming using WebSockets (ws://<executionUrl>/ws) and <executionUrl>/stream;
  • Additional Job Metadata (useful for webhooks);
  • Configurable retries per job;
  • Configurable exponential back-off for retries and failures in monitoring of jobs;
  • Configurable hard timeout for each execution;
  • E-mail subscription to tasks;
  • Healthcheck of the MongoDB and Redis Connections;
  • Web hooks on job start;
  • Web hooks on job completion;
  • Redact any env that contains blacklisted keywords;
  • Exponential back-off parameters per job;
  • Self-healing handling of interrupted jobs;
  • Self-healing handling of unscheduled periodical jobs;
  • Workers should handle SIGTERM and exit gracefully;
  • Docker Container Runner (with docker host pool);
  • Docker Pool per task name (Regular Expressions);
  • Rename docker containers after processing their details;
  • Command to prune processed containers;
  • Routes to remove/put back docker host in job balancing;
  • Docker SSL connections;
  • Circuit breaking when docker host is unavailable;
  • Container Environment Variables per Job;
  • Configurable global limit for number of running jobs per task name (Regular Expressions);
  • Limit of concurrent job executions per task;
  • Kubernetes Container Runner;
  • MongoDB Task and Job Storage;
  • Structured Logging;
  • Monitoring of job completion;
  • Job Expiration;
  • Status Page with details on the farm status (executors, scheduled tasks and queue sizes);
  • Error handling mechanism (Sentry built-in, extensible)
  • Per-job Error handling mechanism (Sentry built-in, extensible)
  • Usage metrics (extensible);
  • Support Redis and Redis Sentinel;
  • Support Redis Cluster;
  • Comprehensive test coverage;
  • CORS headers in every API request (configurable);
  • Basic Auth support;
  • gzip all JSON responses for the API (for requests that accept gzip);
  • Store IP address of enqueued job for auditing (X-Real-IP, then X-Forwarded-For, then request.addr);
  • Admin to inspect tasks and jobs.

Getting started

Getting fastlane up and running is very simple if you have both docker and docker-compose installed.

We'll use a sample docker compose that gets all our requirements up (ps: this docker-compose file runs Docker In Docker and requires privileged mode to run):

$ curl https://raw.githubusercontent.com/fastlane-queue/fastlane/master/docker-compose-sample.yml | docker-compose -f - up -d

Starting fastlane...
Creating fastlane_mongo_1       ... done
Creating fastlane_docker-host_1 ... done
Creating fastlane_redis_1       ... done
Creating fastlane_fastlane_1    ... done
fastlane started successfully.

After that you can start using fastlane. For more details on getting started, read the following page.

Documentation

Read more about fastlane at read the docs.

Contributing

Logo was created by Artur Sousa.

fastlane's People

Contributors

arturfsousa avatar heynemann avatar janiltonmaciel avatar patrickporto avatar rfloriano avatar sergiojorge avatar tonydmorris avatar

Watchers

 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.