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

自动化小时级邮件重复打印初始时间问题排查求助

问题:自动化任务中始终打印首次运行的时间,无法获取实时时间?

你遇到的问题很典型——你的代码里日期和时间变量只在程序启动时计算了一次,之后每次调用Action函数都是复用这个初始值,自然不会更新。

问题出在哪?

看你的代码片段:

# 这两行在全局作用域,程序启动时就计算好了,之后不会再更新
crntDte = today.strftime("%m/%d/%Y")
crntTime = datetime.now(central).strftime('%H:%M')

def Action():
    # 这里直接调用全局变量的固定值,不会重新获取当前时间
    print('Process started at '+ crntDte + " " + crntTime)

crntDte看起来正常只是因为你测试时还没跨天,要是程序运行到第二天,日期也会停留在第一天的数值。而时间每小时都在变化,所以问题立刻就暴露了。

怎么修复?

把获取当前日期和时间的逻辑移到Action函数内部,这样每次执行任务时都会重新计算实时时间。另外你的代码还漏了import schedule,这个也得补上,否则会直接报错。

修改后的完整代码:

import pytz
from datetime import datetime
import time
import schedule  # 补上缺失的schedule库导入

central = pytz.timezone('US/Central')

def Action():
    # 每次执行Action时,重新获取当前的日期和时间
    today = datetime.now(central)
    crntDte = today.strftime("%m/%d/%Y")
    crntTime = today.strftime('%H:%M')
    print('Process started at '+ crntDte + " " + crntTime)

schedule.every(2).minutes.do(Action)
while True:
    schedule.run_pending()
    time.sleep(1)

另外,原代码里utc = timezone('UTC')这行没有被用到,可以直接删掉,减少冗余代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:37