如何解决使用计划库明天运行一次作业
schedule.wednesday.at("13:15").do(job)
使用此代码,我可以在星期三 13:15 运行功能。但是我想执行“第二天早上'10:00'运行函数”之类的操作,该怎么做?
解决方法
包装 job
以返回 schedule.CancelJob
,使其只运行一次。然后安排它在每天 10:00 运行。
def job_once():
job()
return schedule.CancelJob
schedule.every().day.at('10:00').do(job_once)
警告:如果当前时间在 10:00 之前,则作业将在 这一天 10:00 运行。无法在 schedule
库中定义初始延迟 - 但我们可以获得第二天的名称并安排在这一天。
import datetime
tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%A').lower()
getattr(schedule.every(),tomorrow).at('10:00').do(job_once)
,
Python 包含一个名为 sched
的简单库:
import sched,time
def functionYouWantToRun():
...
s = sched.scheduler(time.localtime,time.sleep)
s.enterabs(time.strptime('[three character day] [three character month] [day of month] [time (hh:mm:ss)] [year]')
s.run()
,
def job_that_executes_once():
# Do some work that only needs to happen once...
return schedule.CancelJob
if __name__ == "__main__":
from datetime import datetime,timedelta
import schedule
schedule.every().day.at("10:00").do(job_that_executes_once)
我打算使用时间偏移,但后来意识到上面的方法更容易。这将在第二天运行。
如果您需要在未来运行几天,那么您将回到日期时间偏移量:
x=datetime.today()
y = x.replace(day=x.day,hour=10,minute=0,second=0,microsecond=0) +
timedelta(days=1)
yDay = y.strftime('%A')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。