Python定时任务Schedule模块介绍
互联网软件开发中可以说我们离不开定时任务的功能开发。12306支付时间限制30分钟、定时短信通知、定时统计报表、定时上线活动、数据备份等。我理解的定时任务特点:周期性、定时性、离线性、低调性(夜深人静默默无闻哈哈)。定时任务在软件开发中起到了无私奉献、不求回报的大无畏精神。今天给大家介绍Python定时任务Schedule。
Python Schedule优势:简单易用的API用于作业调度。 非常轻量级,没有外部依赖性。 出色的测试覆盖率。 在Python 3.6、3.7、3.8和3.9上测试通过。 进程内的任务调用不再需要额外的进程。
Python Schedule缺点:持久性的任务 毫秒级的任务 并发执行(可以用多线程解决) 本地化(时区、工作日或节假日)
1、Python Schedule模块(安装)#官方文档 https://schedule.readthedocs.io/en/stable/ #安装 pip install schedule
2、Python Schedule模块(Hello Schedule)#模块导入 import schedule import time #定时执行函数 def job(): with open("schedule_history.log", "a", encoding="utf-8") as objFile: objFile.write("Hello Schedule!!! ") #每秒循环执行 schedule.every().second.do(job) #守护进程 while True: schedule.run_pending() time.sleep(1)
3、Python Schedule模块(业务类)#业务逻辑处理类 class HandelDataService(object): def __init__(self): pass def run(self): with open("business.txt", "a", encoding="utf-8") as fileobj: fileobj.write("Hello Business ") import schedule import time #导入业务类 from business import HandelDataService #调用类业务逻辑 def handle_dispatcher(): objDataService = HandelDataService() objDataService.run() schedule.every().second.do(handle_dispatcher) while True: schedule.run_pending() time.sleep(1)
4、Python Schedule模块(后台运行Nohup)nohup python3 background.py 2>&1 &
5、Python Schedule模块(后台运行官方推荐方式)import threading import time import schedule #启动一个shedule pending线程 def run_schedule_thread(interval=1): schedule_thread_event = threading.Event() class ScheduleThread(threading.Thread): @classmethod def run(cls): while not schedule_thread_event.is_set(): schedule.run_pending() time.sleep(interval) schedule_thread = ScheduleThread() schedule_thread.start() return schedule_thread_event def background_job(): with open("demo.txt", "a", encoding="utf-8") as fileobj: fileobj.write("Hello Python ") #每秒执行一次定时任务 schedule.every().second.do(background_job) #调用schedule pending线程 run_schedule_event = run_schedule_thread()
6、Python Schedule模块(Crontab)#每3秒执行一次 schedule.every(3).seconds.do(job) #每3分钟执行一次 schedule.every(3).minutes.do(job) #每3小时执行一次 schedule.every(3).hours.do(job) #每3天执行一次 schedule.every(3).days.do(job) #每3周执行一次 schedule.every(3).weeks.do(job) #每分钟的23秒执行一次 schedule.every().minute.at(":23").do(job) #每小时的42分钟执行一次 schedule.every().hour.at(":42").do(job) #每5小时的20分30秒执行一次 schedule.every(5).hours.at("20:30").do(job) #每天的10:30执行 schedule.every().day.at("10:30").do(job) #每天的10:30:42秒执行一次 schedule.every().day.at("10:30:42").do(job) #每星期一执行一次 schedule.every().monday.do(job) #每星期三的13:15分执行一次 schedule.every().wednesday.at("13:15").do(job) #每5天到10天随机天数执行一次 schedule.every(5).to(10).seconds.do(my_job) #每小时执行一次至2030年1月1日18点 schedule.every(1).hours.until("2030-01-01 18:33").do(job)
7、Python Schedule模块(业务传参)import schedule import time #函数传参 def job(name,address): with open("demo3.txt", "a", encoding="utf-8") as fileobj: fileobj.write("Hello " + name + ", " + address + " ") #定时任务调用传值 #每秒执行一次 schedule.every().second.do(job,name="second",address="beijing city") while True: schedule.run_pending() time.sleep(1)
8、Python Schedule模块(接口)#取消某个任务 second_job = schedule.every().second.do(job,name="second",address="beijing city") schedule.cancel_job(second_job) #任务只运行一次 def job_exec_once(): #业务类调用 #增加return返回表示任务只运行一次 return schedule.CancelJob schedule.every().second.do(job_exec_once) #获取所有任务 all_jobs = schedule.get_jobs() #取消所有任务 schedule.clear() #根据任务tag选择性过滤任务 schedule.every().day.do(greet, "Andrea").tag("daily-tasks", "friend") schedule.every().hour.do(greet, "John").tag("hourly-tasks", "friend") schedule.every().hour.do(greet, "Monica").tag("hourly-tasks", "customer") schedule.every().day.do(greet, "Derek").tag("daily-tasks", "guest") friends = schedule.get_jobs("friend") #根据任务tag选择性取消任务 schedule.every().hour.do(greet, "John").tag("hourly-tasks", "friend") schedule.every().hour.do(greet, "Monica").tag("hourly-tasks", "customer") schedule.every().day.do(greet, "Derek").tag("daily-tasks", "guest") schedule.clear("daily-tasks")
个人非常喜欢Schedule代码语法方式。一种适合人类逻辑思维阅读的代码设计。
感谢大家的评论、点赞、分享、关注…
全球首个可繁殖活体机器人问世AI参与设计,已自我繁殖4代文丨学术头条,作者丨吴婷婷,编审丨寇建超你或许听过制造机器人组装机器人3D打印机器人,但你听过繁殖机器人吗?为了永续生存,生命必须繁衍。数十亿年来,地球上的生物体已经进化出了多种繁
蓝思科技与凯盛科技集团达成战略合作加快推进光伏玻璃项目落地金融界12月7日消息蓝思科技(300433。SZ)发布公告称,公司于近日与中国建材集团有限公司的全资子公司凯盛科技集团有限公司在深圳市签订战略合作协议,为双方奠定战略合作伙伴关系。
华为称Mate50已准备好将于2022年全球发布今年7月底,华为发布了P50系列手机,这比以往的节奏晚了几乎半年的时间。P50的延期也意味着Mate50系列要推迟,但官方始终没有给出明确答案。日前在罗马尼亚与媒体交流时,华为消费
实体店怎么转型做新零售?2016年10月的阿里云栖大会上,阿里巴巴马云在演讲中第一次提出了新零售,未来的十年二十年,没有电子商务这一说,只有新零售。新零售,即企业以互联网为依托,通过运用大数据人工智能等先
想买电视!买电视!电视!求推荐具体型号?很多爸爸妈妈严格控制孩子看电视就是怕电视的蓝光伤到孩子眼睛不偷摸看电视的孩子的童年都是残缺的为了家庭和谐以及孩子的视力果小妞给大家推荐这款酷开U3B防蓝光护眼电视3299精致外观配
人工智能在未来得趋势会是怎样?人类真的可以完全脱离工作状态吗?据最新行业分析机构报告表明,在今后的发展趋势下,人工智能的普及化也越来越高,尽管之前有相关人士预言AI的寒冬到来,但是从层出不穷的开源框架可以看出,各大公司对于人工智能的进一步普及
测评深圳华为村,还有年薪30万的华为人么?测评深圳片区篇32。马蹄山马蹄山堪称中国学历水平最高的村落这里居住着成千上万的华为员工,他们大多拥有本科以上的学历,其中不乏985,211毕业的硕士,博士生,甚至是海归。两年前,我
中国科学院院士曹镛以自主创新推动我国显示产业高质量发展来源人民网原创稿中国科学院院士曹镛。人民网记者翁奇羽摄人民网合肥12月7日电(记者车柯蒙)当前,新一轮科技革命和产业变革正加速推进,我国显示产业也迎来了新的发展机遇和挑战。12月7
建科院光储直柔绿色建筑碳中和关注原因短线,各地方绿色建筑落地措施有望陆续出台,华为正在建设华为数字能源安托山基地,公司有为华为公司提供一次性的建筑领域技术咨询服务。1事件驱动12月2日,华为在TrustInT
英媒印度裔高管,在硅谷高歌猛进英国星期日泰晤士报网站12月4日发表题为印度裔企业高管们正在硅谷高歌猛进的文章,作者为丹尼福特森。全文摘编如下当推特网站老板杰克多尔西在这家市值340亿美元的社交媒体公司任职15年
微软160亿美收购Nuance交易遭欧盟反垄断调查鞭牛士12月7日消息,据报道,欧盟反垄断监管机构正在对微软160亿美元收购语音识别技术公司NuanceCommunications交易进行更深入的调查,要求客户和竞争对手列出一份担