Skip to main content

Async crontab like scheduler

Project description

Introduction

This is an asynchronous job scheduler with crontab syntax.

How to use

Here is a basic example

# Should run as-is
import time
import asyncio
from typing import Any
from functools import partial

from timewheel import TimeWheel
from timewheel.schedule import Schedule


async def my_job():
    print("hello from job!")
    await asyncio.sleep(3)


async def my_another_job(some_value: Any):
    print(f"Hey! This is my some_value {some_value}")
    await asyncio.sleep(1)


def my_sync_job():
    print("Hello from the sync job")
    time.sleep(10)


async def main():
    timewheel = TimeWheel(schedules=[
        # Runs every 29 minutes
        Schedule("my-schedule", "*/29 * * * *", my_job),
        # Runs every 5th, 10th and 20th minute on wednesday
        Schedule("another-schedule", "5,10,20 * * * 2", my_job),
        # Runs every 10 minutes
        Schedule("my-schedyle-with-fixed-param", "*/10 * * * *", partial(my_another_job,
                                                                         {"some_value": "My value"})),
        # Runs every minute
        Schedule("a-sync-job", "* * * * *", my_sync_job)])
    await timewheel.run()


asyncio.get_event_loop().run_until_complete(main())

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

timewheel-scheduler-0.0.4.tar.gz (4.8 kB view hashes)

Uploaded Source

Built Distribution

timewheel_scheduler-0.0.4-py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 3

Supported by

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