跳转至

timers

该模块提供一些便捷的 Timer

crontabify(pattern, base=None) 🔗

使用类似 crontab 的方式生成计时器

Parameters:

Name Type Description Default
pattern str

时间模式

required
base Optional[TimeObject]

开始时间. 默认为 datetime.now().

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
110
111
112
113
114
115
116
117
118
119
120
121
122
123
def crontabify(pattern: str, base: Optional[TimeObject] = None) -> Ret:
    """使用类似 crontab 的方式生成计时器

    Args:
        pattern (str): 时间模式
        base (Optional[TimeObject], optional): 开始时间. 默认为 datetime.now().

    Yields:
        (datetime): 生成的 datetime.
    """
    base = to_datetime(base) if base else datetime.now()
    crontab_iter = croniter(pattern, base)
    while True:
        yield crontab_iter.get_next(datetime)

every(*, base=None, **kwargs) 🔗

一个简便的 datetime 生成器.

Parameters:

Name Type Description Default
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def every(*, base: Optional[TimeObject] = None, **kwargs) -> Ret:
    """一个简便的 datetime 生成器.

    Args:
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    if base is None:
        while True:
            yield datetime.now() + timedelta(**kwargs)
    else:
        current = to_datetime(base)
        while True:
            current += timedelta(**kwargs)
            yield current

every_custom_hours(hours, *, base=None) 🔗

每 hours 小时执行一次

Parameters:

Name Type Description Default
hours int

距离下一次执行的时间间隔, 单位为小时

required
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
 97
 98
 99
100
101
102
103
104
105
106
107
def every_custom_hours(hours: int, *, base: Optional[TimeObject] = None) -> Ret:
    """每 hours 小时执行一次

    Args:
        hours (int): 距离下一次执行的时间间隔, 单位为小时
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(hours=hours, base=base)

every_custom_minutes(minutes, *, base=None) 🔗

每 minutes 分执行一次

Parameters:

Name Type Description Default
minutes int

距离下一次执行的时间间隔, 单位为分

required
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
84
85
86
87
88
89
90
91
92
93
94
def every_custom_minutes(minutes: int, *, base: Optional[TimeObject] = None) -> Ret:
    """每 minutes 分执行一次

    Args:
        minutes (int): 距离下一次执行的时间间隔, 单位为分
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(minutes=minutes, base=base)

every_custom_seconds(seconds, *, base=None) 🔗

每 seconds 秒执行一次

Parameters:

Name Type Description Default
seconds int

距离下一次执行的时间间隔, 单位为秒

required
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
71
72
73
74
75
76
77
78
79
80
81
def every_custom_seconds(seconds: int, *, base: Optional[TimeObject] = None) -> Ret:
    """每 seconds 秒执行一次

    Args:
        seconds (int): 距离下一次执行的时间间隔, 单位为秒
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(seconds=seconds, base=base)

every_hour(*, base=None) 🔗

每小时执行一次.

Parameters:

Name Type Description Default
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
56
57
58
59
60
61
62
63
64
65
def every_hour(*, base: Optional[TimeObject] = None):
    """每小时执行一次.

    Args:
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(hours=1, base=base)

every_minute(*, base=None) 🔗

每分钟执行一次.

Parameters:

Name Type Description Default
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
44
45
46
47
48
49
50
51
52
53
def every_minute(*, base: Optional[TimeObject] = None) -> Ret:
    """每分钟执行一次.

    Args:
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(minutes=1, base=base)

every_second(*, base=None) 🔗

每秒钟执行一次

Parameters:

Name Type Description Default
base Optional[TimeObject]

若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

None

Yields:

Type Description
datetime

生成的 datetime.

Source code in src/graia/scheduler/timers.py
32
33
34
35
36
37
38
39
40
41
def every_second(*, base: Optional[TimeObject] = None) -> Ret:
    """每秒钟执行一次

    Args:
        base (Optional[TimeObject], optional): 若为 None (默认), 则会相对于当前时间推算. 否则基于 base 推算.

    Yields:
        (datetime): 生成的 datetime.
    """
    yield from every(seconds=1, base=base)