Intro

Clepsydra is a mini framework for task scheduling

All parts are designed to be replaceable.

Main ideas are:

  • No pickle! Tasks are stored in readable format, so can be used outside of framework
  • Task creator doesn’t need to know how tasks are implemented or executed
  • Persistence may be implemented
  • All workers must follow same async style: be either sync or async functions

Currently project is in the design stage and any APIs are to be changed

How to use:

Create scheduler (this step will be customizable).
If your task functions as synchronous, pass param sync_executor=True

from clepsydra import create_scheduler

scheduler = create_scheduler() 

Register functions that can be scheduled (custom name can be provided for compatibility)

scheduler.task(some_func)

Add some job using function name. For example single run:

from clepsydra import SingleRun

job_id = await scheduler.add_job("some_func", rule=SingleRun(when=datetime.now()))

Run scheduler:

await scheduler.run()

GitHub

View Github