Skip to main content

Simple cron-like parser, which determines if current datetime matches conditions.

Project description

pycron

Test Status

Simple cron-like parser for Python, which determines if current datetime matches conditions.

Installation

pip install pycron

Usage

import pycron
pycron.is_now('*/5 * * * *')  # True every 5 minutes
pycron.is_now('0 * * * *')    # True every hour, on minute 0

Help

The formats currently supported are

  • */5 (for "every X" function),
  • 4-10 (for time ranges),
  • 6,8,23 (for a list of values),
  • * (for wildcard),
  • and of course a single number.

The module includes is_now(s, dt=None), where s is the cron-style string and dt is the datetime to use (defaults to current datetime, if not set). The function returns True, if dt matches the format.

It also includes has_been(s, since, dt=None), where s is the cron-style string, since is a datetime in the past and dt is the datetime to use (defaults to current datetime, if not set). The function returns True, if dt would have matched the format at some point during the period. This behaves much like like anacron and is useful for applications which do not run continuously.

All functions are compatible with both timezone aware and naive datetimes.

There are couple of helpers available, mainly for use with Django. They give out list of tuples, as required by Django field choices.

The available helpers are

  • pycron.MINUTE_CHOICES,
  • pycron.HOUR_CHOICES,
  • pycron.DOM_CHOICES, for day of month
  • pycron.MONTH_CHOICES, for month names
  • pycron.DOW_CHOICES, for day names

Support for alternative datetime -libraries

Currently supported "alternative" datetime libraries are:

Notes

This was done, as I personally needed something like this to implement proper timers for my Django-project and every available library felt too complicated for my use-case. Also, this was a good coding exercise...

As the Django -helper choices are quite limited, I've expanded them in my own project by adding values like ('*/5', 'every 5 minutes'), ('1-5', 'on weekdays'), and ('0,6', 'on weekends'). I haven't included them in the code, as every use-case is different, this was just to give an idea on how to use this ;)

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

pycron-3.2.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

pycron-3.2.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file pycron-3.2.0.tar.gz.

File metadata

  • Download URL: pycron-3.2.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.1 Linux/6.11.0-1014-azure

File hashes

Hashes for pycron-3.2.0.tar.gz
Algorithm Hash digest
SHA256 e125a28aca0295769541a40633f70b602579df48c9cb357c36c28d2628ba2b13
MD5 a5d32dac17603af9c9e20d962e6624db
BLAKE2b-256 8e5d340be12ae4a69c33102dfb6ddc1dc6e53e69b2d504fa26b5d34a472c3057

See more details on using hashes here.

File details

Details for the file pycron-3.2.0-py3-none-any.whl.

File metadata

  • Download URL: pycron-3.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.1 Linux/6.11.0-1014-azure

File hashes

Hashes for pycron-3.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d2349746270bd642b71b9f7187cf13f4d9ee2412b4710396a507b5fe4f60dac
MD5 a1414ccbae808b2c5f8c30e64304281a
BLAKE2b-256 f076caf316909f4545e7158e0e1defd8956a1da49f4af04f5d16b18c358dfeac

See more details on using hashes here.

Supported by

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