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

Intel N100 Ubuntu服务器上Python小时级定时任务异常终止问题求助

Intel N100 Ubuntu服务器上Python小时级定时任务异常终止问题求助

大家好,想请教个挺奇怪的问题:

我之前在树莓派4的Ubuntu系统上跑了一个Python应用,里面有三个需要按固定间隔调用的函数,周期分别是300秒、600秒和3600秒。这个应用安安稳稳跑了好几个月,完全没出过岔子。

最近我把树莓派改成了开发机,把应用迁移到了搭载Intel N100芯片的Ubuntu服务器上,结果怪事来了:300秒和600秒间隔的任务一直正常运行,但3600秒(也就是1小时)间隔的任务,在第二次到点执行之后就彻底停了,而且全程没有任何报错信息。

最开始我用的是基于threading的定时实现,代码如下:

def call_repeatedly(interval, func, *args, **kwargs):
    stopped = threading.Event()
    lock = threading.Lock()  # Lock to protect shared state (stopped)
    def loop():
        while not stopped.wait(interval):
            with lock:  # Ensure that no other thread is modifying stopped
                func(*args, **kwargs)
    threading.Thread(target=loop, daemon=True).start()
    return stopped.set

用这个方法时,小时级任务就是在第二次触发后没了动静。

后来我换了sched调度器的实现,代码是这样的:

def call_repeatedly(interval, func, *args, **kwargs):
    scheduler = sched.scheduler(time.time, time.sleep)
    def loop():
        func(*args, **kwargs)
        scheduler.enter(interval, 1, loop)
    scheduler.enter(interval, 1, loop)
    threading.Thread(target=scheduler.run, daemon=True).start()

结果这个版本能正常跑到午夜,但过了零点之后,小时级任务还是会挂掉。

我怀疑是Intel N100的节能模式影响了线程调度,已经把芯片设置成POLL模式(关闭所有节能选项),但问题依然存在。

另外我注意到一个细节:三个任务的间隔都是3600的约数,所以会在整点时刻同时触发。但为什么在性能更弱的树莓派4上完全没问题,到Intel N100就出问题了呢?有没有大佬遇到过类似的情况,或者能给点排查方向?

备注:内容来源于stack exchange,提问作者Pythonaire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:53:07