如何用Python写一个每分每时每天的定时程序

如何用Python写一个每分每时每天的定时程序,第1张

1计算生日是星期几

当你女朋友要过生日了,你肯定要定找家饭店订个餐庆祝一下,餐馆工作日会空一些,周末位置不好定,要是能知道她的生日是星期几就好了,下面这个程序就能搞定~~

比如girl friend 的生日假设是 gf_birthday='2017-3-3'

1)我们先把变量格式化成一个datetime对象

birthday=datetimedatetimestrptime(gf_birthday,'%Y-%m-%d')

2)然后利用datetime里面的函数weekday来得到一个下标

birthdayweekday()

3)构造一个weekdays的列表,根据下标从列表里面取出是周几

weekdays=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']

weekdays[birthdayweekday()]

当然你要计算比如情人节,圣诞节什么的都可以用上面的程序,或者整个列表把10年的节日都罗列计算一下都是可以了,是不是很简单,对日期的理解有木有加深了一下下

2定时任务

在Python里面,比如你想定期去爬一个网页,或者做运维的同学想每天12点去定时download一个文件,或者定时去扫描一些服务器,甚至老板的需求不停的变可能是,每隔5分钟,或者每小时的整点10分,每周每月都有一些定时任务

用Python怎么破很简单,下面这个程序轻松搞定

我们先从一个最简单的例子说,假设我们是每分种的第10秒,去执行一个任务去打印一下当前的目录

1)window下是dir命令,linux是ls

我们用platform这个模块来判断一下 *** 作系统

import platform

os_platfrom=platformplatform()

if os_platfromstartswith('Darwin'):

print'this is mac os system'

ossystem('ls')

elif os_platfromstartswith('Window'):

print'this is win system'

ossystem('dir')

2)如何定时执行

a我们先获取当前的时间

now=datetimedatetimenow()

假设当前时间是2017-02-09 20:19:47555000

b然后我们输入一个你要定时执行的target时间

比如你是x分10秒的时候执行sched_Timer=datetimedatetime(x,x,x,x,x,10)

前面的x是并不重要(只要最后是10秒就行了),我们就把目标时间设的比当前晚一点即可:

sched_Timer=datetimedatetime(2017,2,9,20,20,10)

c好当时间到了20:20:10的时候要运行我们的程序

如何定时到了呢,很简单用

if now==sched_Timer:

'run Task'

d那么如何让时间在下一分钟10秒继续执行呢,也很简单用timedelta()

datetimetimedelta(minutes=1)把target时间往后增加一分钟

sched_Timer=sched_Timer+datetimetimedelta(minutes=1)

然后外边用个while 死循环hold住就可以了

同样的这个代码也可以扩展,把minutes=1改成hours=1就变成了每个小时定时任务,改成days=1就变成每天的定时任务

1、创建ScheduledExecutorService对象,用于执行定时任务。

2、使用scheduleAtFixedRate()方法来设置定时任务,该方法可以指定任务的初始延迟时间、任务运行周期等参数。

3、在定时任务的run()方法中编写任务代码,实现需要执行的业务逻辑。

4、在程序启动时,调用ScheduledExecutorService对象的shutdown()方法来关闭定时任务。

SpringBoot为我们内置了@Scheduled定时任务,下面我们就来配置下这个注解,找到入口程序添加注解@EnableScheduling,添加注解后SpringBoot就已经认定了我们要使用定时任务来完成一些业务逻辑了,内部会对应原始配置定时任务添加对应的配置文件

@scheduled注解用来配置到方法上来完成对应的定时任务的配置,如执行时间,间隔时间,延迟时间等等,下面我们就来详细的看下对应的属性配置

下面我们来配置@Scheduled,来完成每小时输出内容

Seconds : 可出现", - /"四个字符,有效范围为0-59的整数

Minutes : 可出现", - /"四个字符,有效范围为0-59的整数

Hours : 可出现", - /"四个字符,有效范围为0-23的整数

DayofMonth : 可出现", - / L W C"八个字符,有效范围为0-31的整数

Month : 可出现", - /"四个字符,有效范围为1-12的整数或JAN-DEc

DayofWeek : 可出现", - / L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推

Year : 可出现", - /"四个字符,有效范围为1970-2099年

下面简单举几个例子:

"0 0 12 " 每天中午十二点触发

"0 15 10 " 每天早上10:15触发

"0 15 10 " 每天早上10:15触发

"0 15 10 " 每天早上10:15触发

"0 15 10 2005" 2005年的每天早上10:15触发

"0 14 " 每天从下午2点开始到2点59分每分钟一次触发

"0 0/5 14 " 每天从下午2点开始到2:55分结束每5分钟一次触发

"0 0/5 14,18 " 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发

"0 0-5 14 " 每天14:00至14:05每分钟一次触发

"0 10,44 14 3 WED" 三月的每周三的14:10和14:44触发

"0 15 10 MON-FRI" 每个周一、周二、周三、周四、周五的10:15触发

该属性的含义是指在项目启动后在定义的时间后开启定时任务,配合fixedRate()和fixedDelay()使用

该属性的含义是调用固定周期(以毫秒为单位)执行方法:就是上一次开始执行时间点之后延迟执行

该属性的含义是上次调用结束和下一次调用结束之间的固定周期(以毫秒为单位)执行方法:就是上一次执行完毕时间点之后延迟执行。

1、cron、fixedDelay、fixedRate 三者之间不能共存!!!

2、fixedDelay、fixedRate不能单独使用!!!

会抛出一个错误:

以上就是关于如何用Python写一个每分每时每天的定时程序全部的内容,包括:如何用Python写一个每分每时每天的定时程序、java定时任务每天多个时间点怎么办、定时任务 | @scheduled等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9815912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存