Madoka Madoka
首页
  • 文档 v4
  • 旧版文档 v3
  • 开发文档 v4
  • 旧版开发文档 v3
更新日志
加入QQ群 (opens new window)
GitHub (opens new window)
首页
  • 文档 v4
  • 旧版文档 v3
  • 开发文档 v4
  • 旧版开发文档 v3
更新日志
加入QQ群 (opens new window)
GitHub (opens new window)
  • 插件开发文档

    • 开始
    • 创建一个新的插件
    • 命令解析器
    • 消息队列 & 消息发送器
    • 计划任务
      • 准备工作
      • 注册计划任务
      • timers 模块
      • 特殊的 timers
    • 数据表配置
  • API列表
  • 其他语言SDK
  • developer-v4
  • 插件开发文档
MadokaProject
2022-07-30
目录

计划任务

# 准备工作

工欲善其事,必先利其器

from app.util.graia import GraiaScheduler

from app.core.app import AppCore

core: AppCore = AppCore()  # 获取 Madoka 实例
sche: GraiaScheduler = core.get_scheduler()  # 获取 GraiaScheduler 实例

# 注册计划任务

通过 GraiaScheduler 我们可以注册一个计划任务

······
from app.util.graia import GraiaScheduler, timers

······

@sche.schedule(timers.every_second())
async def tasks():
    print('每秒执行一次')

# timers 模块

通过 timers 模块,可以便捷的生成一些计时器

  • timers.every_second: 每秒执行一次。
  • timers.every_custom_seconds: 每 n 秒执行一次
  • timers.every_minute: 每分钟执行一次
  • timers.every_custom_minutes: 每 n 分钟执行一次
  • timers.every_hours: 每小时执行一次
  • timers.every_custom_hours: 每 n 小时执行一次

这些便捷的 timers 可以在其 文档字符串 中获得

当然,这些简易的计时器都是以机器人启动时开始计时。

难道我们要掐着点启动机器人?

# 特殊的 timers

timers.crontabify 支持传入一个 crontab 时间格式来进行时间计算,相关语法可以看 菜鸟教程对 crontab 的讲解 (opens new window)

值得注意的是,Linux crontab 使用 5 位数字,但 timers.crontabify 所使用的 crontab 语法分析库支持将秒做为第六位参数传入。

# 每天7点15分30秒执行
@sche.schedule(timers.crontabify('15 7 * * * 30'))

注意

不要把 crontab 的第六位参数写成 *,这将会导致每秒都执行一次。除非你知道你在做什么。

上次更新: 2022/11/22, 00:08:13
消息队列 & 消息发送器
数据表配置

← 消息队列 & 消息发送器 数据表配置→

Theme by Vdoing | Copyright © 2021-2022 Madoka Project
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式