Metadata-Version: 2.1
Name: graia-scheduler
Version: 0.3.1
Summary: a scheduler for graia framework
Author-Email: GreyElaina <31543961+GreyElaina@users.noreply.github.com>
License: MIT
Requires-Python: <4.0,>=3.8
Requires-Dist: graia-broadcast~=0.23.0
Requires-Dist: croniter<2.0.0,>=1.0.0
Requires-Dist: launart>=0.7.0
Requires-Dist: creart~=0.3.0
Requires-Dist: graia-saya<0.1,>=0.0.16; extra == "saya"
Provides-Extra: saya
Description-Content-Type: text/markdown

# Graia Scheduler

一个基于 `asyncio`, 设计简洁, 代码简单的计划任务库, 使用 `loop.create_task` 创建计划任务;  
同时使用生成器特性与 `croniter` 的定时设计, 轻盈而强大.

## Install

```bash
pip install graia-scheduler

# or use pdm
pdm add graia-scheduler
```

## 使用

**0.1以前的版本:**

```python
import asyncio
from graia.broadcast import Broadcast
from graia.scheduler import GraiaScheduler
from graia.scheduler.timers import crontabify

loop = asyncio.new_event_loop()

bcc = Broadcast(loop=loop)
scheduler = GraiaScheduler(loop, bcc)


@scheduler.schedule(crontabify("* * * * * *"))
def something_scheduled():
    print("print every second.")

loop.run_forever()
```

**0.1及后续的版本:**

```python
import asyncio
from graia.broadcast import Broadcast
from graia.scheduler import GraiaScheduler
from graia.scheduler.timers import crontabify

loop = asyncio.new_event_loop()

bcc = Broadcast(loop=loop)
scheduler = GraiaScheduler(loop, bcc)


@scheduler.schedule(crontabify("* * * * * *"))
def something_scheduled():
    print("print every second.")


loop.run_until_complete(scheduler.run())
```

因为基于 `BroadcastControl`, 你可以享受使用 `Dispatcher`, `Interrupt`, `Decorator` 的开发体验.
