【问题标题】:How to run a function on a scheduler with clokwerk?如何使用 clokwerk 在调度程序上运行一个函数?
【发布时间】:2023-01-08 11:38:16
【问题描述】:

我一直在尝试使用 clokwerk crate 在 Rust 中运行调度程序。我复制了一些文档中的代码并尝试运行它,但它对我不起作用。它编译得很好,但我希望看到“定期任务”每 10 秒记录到控制台一次,但这并没有发生。

use clokwerk::{Scheduler, TimeUnits};

fn main() {
    let mut scheduler = Scheduler::with_tz(chrono::Utc);

    scheduler
        .every(10.seconds())
        .run(|| println!("Periodic task"));
}

我究竟做错了什么?

【问题讨论】:

  • 什么不起作用?它编译吗?如果您遇到任何错误,请将它们编辑到您的问题中。

标签: rust scheduler


【解决方案1】:

scheduler.every(...).run(...) 不执行任务,它只是向调度程序注册任务。要实际指示调度程序运行任务,您需要在循环中重复调用run_pending(),如文档中的示例所示:

loop {
    scheduler.run_pending();
    thread::sleep(Duration::from_millis(100));
}

【讨论】:

  • 请注意,还有一个 watch_thread() 方法,您可以使用它来生成后台线程来执行相同的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 2022-01-01
  • 2014-04-18
  • 2016-05-11
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多