Show HN: Rocketry – Modern scheduler to power your Python projects

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • rocketry

    Modern scheduling library for Python

    Thanks a lot, nice to hear!

    The system knows which task ran and when by extedning logging (from standard library). There is a logger called "rocketry.task" that should have a handler which can be read as well: redbird.logging.RepoHandler. An in-memory logger is created if nothing is specified. This handler abstracts simple read and write to a data store which can be an SQL database, in-memory Python list, MongoDB or CSV file.

    Seems I forgot to implement a method mentioned in the docs but here's an example to specify a task log repo: https://github.com/Miksus/rocketry/issues/108#issuecomment-1...

    The latest success time, starting time etc. are also stored in the tasks themselves and there is some optimization (which can be turned off) to reduce the reads in some cases. In the start-up these attributes are set in each task (if logs found).

  • red-bird

    Repository Patterns for Python

    There is a repository mechanism to store the logs. The task logger is simply an extension of logging library. Seems my docs are slightly off on setting up the CSV repo but you can just add a RepoHandler (from redbird) to the logger called rocketry.task. At the moment there are MemoryRepo, CsvFileRepo, SQLRepo and MongoRepo.

    You can find more finer details of the repo mechanics in Red Bird's docs: https://red-bird.readthedocs.io/.

    And there are methods in the session to shut down or restart the scheduler in various ways. There is also a shut condition to end the scheduling when a condition is reached.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • rocketry-with-fastapi

    Example of how to create a scheduler with an API

    If you want an API (or UI), just clone this and modify it as you need: https://github.com/Miksus/rocketry-with-fastapi. I also wrote an article to Medium how it works with FastAPI: https://itnext.io/scheduler-with-an-api-rocketry-fastapi-a0f...

    Rocketry plays quite nicely with FastAPI.

  • Python Fire

    Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.

    Fire can basically do the first step (object -> CLI):

    https://github.com/google/python-fire

    Gooey can do (CLI -> GUI):

    https://github.com/chriskiehl/Gooey

  • Gooey

    Turn (almost) any Python command line program into a full GUI application with one line

    Fire can basically do the first step (object -> CLI):

    https://github.com/google/python-fire

    Gooey can do (CLI -> GUI):

    https://github.com/chriskiehl/Gooey

  • fcron

    fcron is an advanced cron for Linux/Unix systems

    Does this support multiple time zones simultaneously? We have clients that are in different time zones, and (for example) they all want weekly summary emails every Monday morning at 6am, but in their own timezone. So California users get theirs at 6am US/Pacific, New York users get theirs at 6am US/Eastern, and we want to be able to handle this without having to worry about updating crontabs the night of a daylight savings change.

    For this reason, we are using fcron[0] instead of regular cron, which allows you to specify the timezone at the start of each crontab line. If this tool supports that sort scenario, it might be worth switching.

    [0] https://github.com/yo8192/fcron

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts