Metadata-Version: 2.1
Name: timewheel-scheduler
Version: 0.1.1
Summary: Async crontab like scheduler
Home-page: UNKNOWN
Author: Fausto Alonso
Author-email: fausto.alonso@captalys.com.br
License: MIT
Platform: UNKNOWN
Description-Content-Type: text/markdown

## Introduction

This is an asynchronous job scheduler with crontab syntax.

## How to use

Here is a basic example:

```python
# Should run as-is
import time
import asyncio
from typing import Any

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)


async def main():
    timewheel = TimeWheel(schedules=[
        # Runs every 29 minutes using America/Sao_Paulo
        # as base
        Schedule(name="my-schedule", 
                 expression="*/29 * * * *",
                 timezone="America/Sao_Paulo",
                 job=my_job),
        # Runs every 5th, 10th and 20th minute on wednesday
        # using America/Los_Angeles tz as base
        Schedule(name="another-schedule", 
                 expression="5,10,20 * * * 2", 
                 timezone="America/Los_Angeles",
                 job=my_another_job)])
    await timewheel.run()


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

The timezone information is based on [IANA](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

