https://github.com/jdodds/recurring
small python library for running something every n seconds
https://github.com/jdodds/recurring
concurrent cron periodic python recurring-events schedule threading
Last synced: 16 days ago
JSON representation
small python library for running something every n seconds
- Host: GitHub
- URL: https://github.com/jdodds/recurring
- Owner: jdodds
- License: mit
- Created: 2018-05-22T08:10:07.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-30T09:36:30.000Z (about 8 years ago)
- Last Synced: 2025-12-16T17:22:42.049Z (6 months ago)
- Topics: concurrent, cron, periodic, python, recurring-events, schedule, threading
- Language: Python
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Recurring
[](https://travis-ci.org/jdodds/recurring) [](https://coveralls.io/github/jdodds/recurring?branch=master) [](https://recurring.readthedocs.io/en/latest/?badge=latest)
This is a simple library for running a function or callable every N seconds. It's meant for applications that need to schedule small, self-contined callable(s) on a relatively long, potentially changing period . alive-checks, state snapshots, that sort of thing.
## Use this if:
+ You want to call something periodically over the lifetime of your application.
+ You want to be able to change the time between calls.
+ You want or need to avoid the overhead of `join`ing and `start`ing a thread every time. (up to 1/5 of a second according to my sample-size of one machine under no other load)
+ The stuff you're going to call isn't going to destroy machines if it's killed abruptly at the end of the application's life.
## This is probably not appropriate for your project if:
+ You're already using or likely will be using a fleshed-out concurrency framework.
+ You have many things you'd like to repeatedly schedule and run.
+ Your callables absolutely **must** execute some cleanup code to avoid disaster on kill.
This is not a library intended for top-level program composition.
## Installation:
pip install recurring
## Usage:
import recurring
def stuff():
# do stuff ...
seconds_between_stuff = 30
job = recurring.job(stuff, seconds_between_stuff)
job.start()
# ...
seconds_between_stuff = 300000000 # this will be *from when rate is set*, not *from the next scheduled call*
job.rate = seconds_between_stuff
# ...
# stop making calls until start() is called again
job.stop()
# some time later ....
job.start()
# stop making calls permanently
job.terminate()
job.start() # raises RuntimeError
job.rate = 3000 # raises RuntimeError