niuhuan / rust_proc_qq

[RUST] 模块化QQ机器人框架 (Based RICQ)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[功能] 定时任务支持

rcoplo opened this issue · comments

commented

大佬看看这个可行吗 commit

/// 每1分钟获取一次 bot uin
#[scheduler_job(cron = "0 0/1 * * * ?")]
async fn handle_scheduler(c:Arc<Client>) {
    let bot_uin = c.bot_uin().await;
    println!("{}", bot_uin);
}

/// scheduler
pub fn scheduler() -> SchedulerJob {
    scheduler!(
        "hello_jobs",
        handle_scheduler
    )
}

如果可以的话我提一个pr

这是个很好的提议。建议和module类似可以直接设置并使用。我很乐意接收这个想法。

需要注意以下。我刚提了一个PR,改动比较大。#36

如果可以的话merge以下master之后进行PR。

commented

如果可以的话merge以下master之后进行PR。

好的

我先尝试改一下你的代码,比如

  • jobs_scheduler 放在client里面,不需要建立多个。
  • 让handler返回result,这样用起来方便一起
  • 或者在clientBuilder::build的时候就执行一些init的动作,而不是推迟到run。

遇到问题我会推送到dev给你看一下

commented

我先尝试改一下你的代码,比如

  • jobs_scheduler 放在client里面,不需要建立多个。
  • 让handler返回result,这样用起来方便一起
  • 或者在clientBuilder::build的时候就执行一些init的动作,而不是推迟到run。

遇到问题我会推送到dev给你看一下

4d21100

我把我刚才的想法加了进去,我只改了 proc_qq 没有改 codegen.

jobs_scheduler.start() 这个名字我看你用tokio::spawn调用,start看起来是启动的意思。我用了一个mutex包裹jobs_scheduler不知道会不会有问题

我的想法是一开始就设置好任务,然后一起启停,

use std::future::Future;

如果按照这个思路改 scheduler 跟module的思路就比较一致了。 codegen也类似

你可以试一下有没有问题或者补充其他的,能用的话我可以提交到master了

commented

我试了一下,当shutdown() 之后,再次start()就会报错了,JobScheduler 需要重新初始化,添加任务才行

我试了一下,当shutdown() 之后,再次start()就会报错了,JobScheduler 需要重新初始化,添加任务才行

我改一下

改好了

commented

没问题了,可以加个ModuleScheduler添加的时候的日志吗

调用的时候?我写todo的时候吗?文档还需要改一改

commented

调用的时候?我写todo的时候吗?文档还需要改一改

这种
加了日志好观察模块是否加载.

调用的时候?我写todo的时候吗?文档还需要改一改

这种 加了日志好观察模块是否加载.

我把我的定时任务的代码提交到master了。增加了在编译时校验cron是否正确。

builder::build里面加上tracing::debug? 如果是的话,你可以pr一下。

贡献者里没有你,应该是rebase merge的问题。我手动又强推了一下,有了。