Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pycron

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pycron

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

  • 3.1.1
  • PyPI
  • Socket score

Maintainers
1

pycron

Test Status Coverage 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 ;)

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc