Skip to main content

Cron scheduling for python functions.

Project description

# crython [![Build Status](https://travis-ci.org/ahawker/crython.png)](https://travis-ci.org/ahawker/crython)
crython is a lightweight task (function) scheduler using [cron](http://en.wikipedia.org/wiki/Cron) expressions written in python.

### Status
This module is currently under development.

### Installation
To install crython, simply:
```bash
$ pip install crython
```

### Usage
Crython supports seven fields (seconds, minutes, hours, day of month, month, weekday, year).

Call a function once a minute:
```python
import crython

#Fire once a minute.
@crython.job(minute=0)
def foo():
print "... while heavy sack beatings are up a shocking nine hundred percent?"
```

Call a function every ten seconds:
```python
#Fire every 10 seconds.
@crython.job(second=range(0,60,10))
def foo():
print "I'm a big four-eyed lame-o and I wear the same stupid sweater every day."
```

Call a function with a single cron expression:
```python
#Fire every 10 seconds.
@crython.job(second='*/10')
def foo():
print "Hail to the thee Kamp Krusty..."
```

Call functions with a full cron expression:
```python
#Fire once a week.
@crython.job(expr='0 0 0 * * 0 *')
def foo():
print "Back in line, maggot!"
```

Call functions with positional and/or keyword arguments:
```python
#Fire every second.
@crython.job(second=0, 10, 20, name='Homer Simpson')
def sum(x, y, name):
print "Hello {0}. The sum is {1}".format(name, x+y)
```

Call functions with [predefined keywords](http://en.wikipedia.org/wiki/Cron#Predefined_scheduling_definitions):
```python
#Fire once a day.
@crython.job(expr='@daily')
def foo():
print "That's where I saw the leprechaun. He tells me to burn things!"
```

Start the global job scheduler:
```python
if __name__ == '__main__':
crython.tab.start()
```

### TODO
- Keyword support (yearly, weekly, daily, etc)
- Support "L", "W" and "#" specials.
- Determine time delta from now -> next time expression is valid.

### Contributing
If you would like to contribute, simply fork the repository, push your changes and send a pull request.

### License
Crython is available under the [MIT license](https://github.com/ahawker/crython/blob/master/LICENSE.md).

### See Other
There are similar python cron libraries out there.
See:
[pycron](http://www.kalab.com/freeware/pycron/pycron.htm),
[python-crontab](http://pypi.python.org/pypi/python-crontab/),
[cronex](https://github.com/jameseric/cronex).

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

crython-0.0.1.zip (11.1 kB view details)

Uploaded Source

File details

Details for the file crython-0.0.1.zip.

File metadata

  • Download URL: crython-0.0.1.zip
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for crython-0.0.1.zip
Algorithm Hash digest
SHA256 29e3e10bf2dcfed92f18d979fc6de686b8967e5df7d3bbf89a16772fdb2155ed
MD5 492a6fe996834295ab82704b6bc12dea
BLAKE2b-256 6488be509493b359e82f56c747fae6d0729349acb3ae2de6f92f366ea4575d30

See more details on using hashes here.

Supported by

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