Metadata-Version: 2.1
Name: thescheduler
Version: 0.1.0
Summary: A distributed declarative task scheduler built on Celery
Home-page: https://github.com/ehm-are/thescheduler
Author: M Rahman
Author-email: mmr@twostations.com
License: MPL 2.0
Keywords: thescheduler,celery,redis,scheduler,task,job,distributed,messaging
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7

==================================================================
thescheduler: A Declarative Task Scheduling Engine built on Celery
==================================================================

.. image:: https://img.shields.io/pypi/v/thescheduler.svg
        :target: https://pypi.python.org/pypi/thescheduler

.. image:: https://img.shields.io/travis/ehm-are/thescheduler.svg
        :target: https://travis-ci.org/ehm-are/thescheduler

.. image:: https://readthedocs.org/projects/thescheduler/badge/?version=latest
        :target: https://thescheduler.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

**This project is in pre-alpha, early development, and subject to fast (read: breaking) changes**

A proof-of-concept **Distributed Task/Job Scheduler**, designed largely for batch-driven environments.

thescheduler exposes built-in functionality of Celery through "tags", declarative syntax used to create job definitions.

It also implements additional features (e.g. centralized logging, log rotation) to cover extended use-cases.

Features
--------

- Write job definitions using a simple yaml-based syntax.

- Definitions are file based, so that they can be incorporated into existing development workflows (CI/CD). 
  Write/commit/deploy your job definitions alongside your code.

- thescheduler will read and parse valid definitions, add them to the schedule, and send to the pool of workers for execution.

- Build workflows/pipelines by linking jobs using the dependency tag.


External Dependencies
---------------------

- redis


Installation
------------

- Development version:

  ::

    $ git clone git@github.com:ehm-are/thescheduler.git
    $ cd thescheduler
    $ pip install -e .


- or direct from the repository:

  ::

    pip install git+https://github.com/ehm-are/thescheduler.git

Docker
------

::

  TODO


Usage
-----

1. Configure settings
    ``TODO``
2. Start thescheduler
    ``TODO``
3. Start the workers
    ``TODO``
4. Create a job definition in your configured job path ``ex: /jobs/test/job_3``
    ::

        runcmd:      python3 hello_world.py
        startat:     13:00 US/Pacific
        failat:      13:05 US/Pacific
        runday:      mon, wed, fri
        pool:        us-west-1-dev
        env:         PATH="/home/user/.local/bin"
        dependon:    /test/job_1, /test/job_2

Credits
-------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage

-----------------------------------------------------

* Free software: Mozilla Public License 2.0 (MPL 2.0)
* Documentation: https://thescheduler.readthedocs.io.

-----------------------------------------------------


=======
History
=======

0.1.0 (2020-01-01)
------------------

* First release on PyPI.


