Skip to main content

Lets you manage cron jobs via mara

Project description

Mara Cron

Mini package for managing cron jobs via mara.

 

Installation

To use the library directly:

pip install git+https://github.com/mara/mara-cron.git

 

Config of cron jobs

To configure cron jobs in mara you just need to add a new function MARA_CRON_JOBS in your module or app in the __init__.py file.

Here is a sample which has two jobs:

  1. the job cleanup_data_folder clears all data from the local folder /data/. This job is by default disabled.
  2. the job nightly runs the root pipeline at 01:00 o'clock each day

Note: The MaraJob job requires that you define the PATH environment variable in your crontab. Cron by default uses just /usr/bin:/bin which is not enough. I recommend using the distribution default e.g. /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.

def MARA_CRON_JOBS():
    from mara_cron.job import CronJob, MaraJob
    return [
        CronJob(id='cleanup_data_folder',
                description='Clean up the data folder',
                time_pattern='0 0 * * *',
                command='rm -rf /data/*',
                enabled=False),
        MaraJob(id='nightly',
                description="Nightly run of the BI system",
                time_pattern='0 1 * * *',
                command='mara_pipelines.ui.run'),
    ]

Local config

Sample local config to activate crontab management in your mara app:

from mara_app.monkey_patch import patch
import mara_cron.config

# Activates mara_cron jobs. If not set all jobs are
# by default disabled and can only be activated via
# executing:
#    flask mara_cron.enable --job-id "my_job_id"
patch(mara_cron.config.enabled)(lambda: True)

# Optional parameter to specify a mara instance name
# This is necessary to separate multiple environments running
# on the same user
patch(mara_cron.config.instance_name)(lambda: 'prod')

CLI

This package contains the following cli commands:

Command Description
mara_cron.enable --job-id "my_job_id" [--module "module_name"] Enables a specific job regardless of the configuration.
mara_cron.disable --job-id "my_job_id" [--module "module_name"] Disables a specific job.
mara_cron.list-crontab Lists the current cron tab settings
mara_cron.list-crontab --with-changes Lists the current cron tab including the changes not yet written
mara_cron.write-crontab Writes all not published changes to the crontab
mara_cron.clear-crontab Removes all mara jobs from the crontab. Note This applies to all instances !!!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mara-cron-0.9.3.tar.gz (9.8 kB view hashes)

Uploaded Source

Built Distributions

mara_cron-0.9.3-py3.9.egg (20.5 kB view hashes)

Uploaded Source

mara_cron-0.9.3-py3-none-any.whl (10.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page