Framework for creating and running cron jobs.
Install library through pip
pip install chas
Add decorator to function in your script called
job_jobname.py (note: it must start with prefix
job_) that you want to run as cron job. For example:
from chas import chas @chas.job("08:00") def print_hello_world(): print("Hello, World!")
Finally, you can start up a server by running. This starts the cron scheduler, which will execute the function at given times, and also you can view and manage jobs on
chas start --http-server
Chas is convenient even from running jobs from your command line. You can do
Which prints out all the registered jobs
Job Next run Last run Last status print_hello_world 22-12-2018 08:00:00 N/A N/A
You can run any of these jobs by typing
chas run print_hello_world
As already mentioned,
@chas.job(time) registers a job at a particular time. There another decorator
@chas.setup() which simply executes the script inside during the import time. This should be used for setting up environment variables. For example`
import os from chas import chas @chas.setup() def setup_environment(): os.environ["foo"] = "bar" @chas.job("09:00") def print_env_var(): print(os.environ["foo"])
On run would print
In case you structure your directory as a Python package, you will need to export all scripts with
@chas.job from the package. Then, you will run all shell commands as above, but with adding parameter
--package folder_name where
folder_name specifies the entry point to your package.
For example, if you structure your package in the following way:
. |-- src | -- __init__.py | -- script_one.py | -- script_two.py |-- LICENSE |-- README.md
Then you can run
chas list --package src.
When starting the server with option
chas automatically opens up Prometheus metrics endpoint on
/metrics. This allows you to easily monitor your chas script with Prometheus and complementary tools like Grafana, Alertmanager etc.
The two metrics gathered are Counter-type objects named
job_runs_status_total, first denoting the number of times a job was run and the second also counting their statuses, either
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size chas-0.5.0-py3-none-any.whl (144.4 kB)||File type Wheel||Python version py3||Upload date||Hashes View hashes|
|Filename, size chas-0.5.0.tar.gz (139.4 kB)||File type Source||Python version None||Upload date||Hashes View hashes|