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 mara-cron

 

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',
                default_time_pattern='0 0 * * *',
                command='rm -rf /data/*',
                enabled=False),
        MaraJob(id='nightly',
                description="Nightly run of the BI system",
                default_time_pattern='0 1 * * *',
                command='pipelines 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:
#    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 (mara cron <command>):

Command Description
enable --job-id "my_job_id" [--module "module_name"] Enables a specific job regardless of the configuration.
disable --job-id "my_job_id" [--module "module_name"] Disables a specific job.
schedule-job --job-id "my_job_id" Schedules a job to run in less than 1 minute.
list-crontab Lists the current cron tab settings
list-crontab --with-changes Lists the current cron tab including the changes not yet written
write-crontab Writes all not published changes to the crontab
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.12.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

mara_cron-0.12.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file mara-cron-0.12.0.tar.gz.

File metadata

  • Download URL: mara-cron-0.12.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for mara-cron-0.12.0.tar.gz
Algorithm Hash digest
SHA256 5804901c695047779e4a214e56c6b3372e521606923926f3c121b3a09402a350
MD5 4e43aa52312a5b105a97525f92d941f3
BLAKE2b-256 9c9262d414e2809a6b48ff74bbef08c498c98a9e3065fe7a63945227c0ef7231

See more details on using hashes here.

File details

Details for the file mara_cron-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: mara_cron-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for mara_cron-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b24a8aaf2f1de80eda6f8c08842c0282fe9fceabd7b2353ef37c8b89945e75a
MD5 b4a51bed31cbe5e275c8f13132691434
BLAKE2b-256 3f2a63b4d633d2fb22c5fbd6eccbded06690a2b732d716af87ac70475e8f7c23

See more details on using hashes here.

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