You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用clokwerk在Rust中配置定时任务无效,求助排查问题

问题原因及解决办法

你的代码只完成了任务定义,却没有启动调度器的执行逻辑——程序运行到main函数末尾就直接退出了,根本没机会触发定时任务。

clokwerk的Scheduler不会自动后台运行,必须显式让它进入执行循环。下面是两种可行的修改方案:

方案1:使用官方阻塞运行方法(推荐)

改用blocking模块的Scheduler,调用blocking_run()让程序持续运行并执行任务:

use clokwerk::{blocking::Scheduler, TimeUnits};

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

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

    // 阻塞当前线程,持续执行调度任务
    scheduler.blocking_run();
}

方案2:手动实现执行循环

如果需要自定义循环逻辑(比如加入退出条件),可以手动调用run_pending()并配合sleep:

use clokwerk::{Scheduler, TimeUnits};
use std::thread;
use std::time::Duration;

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

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

    // 无限循环检查并执行待处理任务
    loop {
        scheduler.run_pending();
        // 每隔100ms检查一次,避免占用过多CPU
        thread::sleep(Duration::from_millis(100));
    }
}

两种方案都能让定时任务按预期每10秒输出内容。

内容的提问来源于stack exchange,提问作者Ifeanyi Nwachi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:05:32