Rocketry

The engine to power your Python apps

Test Test coverage Package version Supported Python versions


No time to read? Get started then.

Rocketry is a modern scheduling framework for Python applications. It is simple, clean and extensive.

Key features:

  • Simple: productive and easy to set up

  • Clean: Scheduling is just plain English

  • Robust: Well tested and production ready

  • Extensive: Has a lot of built-in features

  • Customizable: Designed to be modified

Core functionalities:

  • Powerful scheduling syntax

  • A lot of built-in scheduling options

  • Task parallelization

  • Task parametrization

  • Task pipelining

  • Modifiable session also in runtime

It looks like this:

from rocketry import Rocketry

app = Rocketry()

@app.task('daily')
def do_things():
    ...

if __name__ == "__main__":
    app.run()
Dislike the syntax?

You can also use the condition API:

from rocketry import Rocketry

app = Rocketry()

@app.task('daily')
def do_things():
    ...

if __name__ == "__main__":
    app.run()

Why Rocketry?#

There are a lot of options for scheduler:

  • Crontab

  • APScheduler

  • Airflow

Rocketry provides more features than Crontab and APScheduler and it is much easier to use than Airflow. Rocketry has by far the cleanest syntax compared to the alternatives and it is the most productive.

Rocketry is the automation backend that sets your applications alive. It has customization built into it and it is possible to build really complex systems that are can self update, self restart and interact with users. And all of these are easy to implement.

Here is a demonstration of more advanced case:

from rocketry import Rocketry
from rocketry.args import Return, Arg, FuncArg

app = Rocketry()

@app.cond('is foo')
def is_foo():
    "This is a custom condition"
    ...
    return True


@app.task('daily & is foo', execution="process")
def do_daily():
    "This task runs once a day and runs on separate process"
    ...
    return ...

@app.task("after task 'do_daily'")
def do_after(arg1=Return('do_daily')):
    """This task runs after 'do_daily' and it has its the 
    return argument as an input"""
    ...


if __name__ == "__main__":
    app.run()

Interested?#

Just install the library:

pip install rocketry

There is much more to offer. See quick start and get started with tutorials. There are also handbooks to check options and details.

Indices and tables#