/python-aioschedule

Python job scheduling for humans.

Primary LanguagePythonMIT LicenseMIT

aioschedule

https://api.travis-ci.org/ibrb/python-aioschedule.svg?branch=master https://coveralls.io/repos/ibrb/python-aioschedule/badge.svg?branch=master https://media.ibrb.org/ibr/images/logos/landscape1200.png

Python job scheduling for humans. Forked and modified from github.com/dbader/schedule.

An in-process scheduler for periodic jobs that uses the builder pattern for configuration. Schedule lets you run Python functions (or any other callable) periodically at pre-determined intervals using a simple, human-friendly syntax.

Inspired by Adam Wiggins' article "Rethinking Cron" and the clockwork Ruby module.

Features

  • A simple to use API for scheduling jobs.
  • Very lightweight and no external dependencies.
  • Excellent test coverage.
  • Tested on Python 3.5, and 3.6

Usage

$ pip install aioschedule
import asyncio
import aioschedule as schedule
import time

async def job(message='stuff', n=1):
    print("Asynchronous invocation (%s) of I'm working on:" % n, message)
    asyncio.sleep(1)

for i in range(1,3):
    schedule.every(1).seconds.do(job, n=i)
schedule.every(5).to(10).days.do(job)
schedule.every().hour.do(job, message='things')
schedule.every().day.at("10:30").do(job)

loop = asyncio.get_event_loop()
while True:
    loop.run_until_complete(schedule.run_pending())
    time.sleep(0.1)

Documentation

Schedule's documentation lives at schedule.readthedocs.io.

Please also check the FAQ there with common questions.

Development

Run vagrant up to spawn a virtual machine containing the development environment. Make sure to set the IBR_GIT_COMMITTER_NAME and IBR_GIT_COMMITTER_EMAIL environment variables.

Meta

Distributed under the MIT license. See LICENSE.txt for more information.

https://github.com/ibrb/python-aioschedule