当前位置: 首页 > article >正文

用python解放右手(五) 定时任务-让代码比你先上班

定时任务让代码比你先上班本文基于 Python 3.9涉及库schedule、APScheduler。阅读时间约 10 分钟。安装依赖pip install schedule apscheduler阿明的早间仪式每天早上 8:30阿明到公司后的第一件事是打开三个系统、导出昨日数据、跑几个查询、把结果截图发群里。等搞完这些已经 9:30 了。咖啡凉了正经活儿还没开始干。周三早上阿明又在做这套早间仪式老张端着咖啡路过瞥了一眼“你这套操作每天固定做”“对啊雷打不动。”“几点开始做”“8:30 到公司9:30 左右做完。”老张摇头“你让代码 8 点就跑你到公司直接看结果不香吗”阿明愣住“……还能这样”这叫定时任务。老张拉过椅子坐下“让代码比你先上班。”第一步认识schedule——简单定时像设闹钟“阿明你手机设过闹钟吧”“当然。”“schedule库就是给 Python 设闹钟的——简单、直观适合本机跑的小脚本。”pipinstallschedule最简示例每天说早安importscheduleimporttimedefjob():print(⏰ 该干活了)# 每天 9:00 执行schedule.every().day.at(09:00).do(job)# 保持运行检查是否有任务到期whileTrue:schedule.run_pending()time.sleep(1)# 每秒检查一次“看到没schedule.every().day.at(09:00).do(job)就是’每天早上 9 点执行 job 函数’。”“while True循环是让脚本一直跑着每秒检查一下’到点了吗到点了吗”阿明点头“确实像闹钟……但这脚本要一直开着”“对schedule适合本机长期运行的脚本。如果你想更专业的调度后面讲APScheduler。”第二步各种定时模式“schedule支持的定时模式很多我给你列几个常用的”importscheduleimporttimedefjob():print(执行任务...)# 每 10 分钟执行一次schedule.every(10).minutes.do(job)# 每小时执行一次schedule.every().hour.do(job)# 每天 9:30 执行schedule.every().day.at(09:30).do(job)# 每周一 9:00 执行schedule.every().monday.at(09:00).do(job)# 每周五 17:00 执行发周报schedule.every().friday.at(17:00).do(job)# 每 2 小时的第 15 分钟执行schedule.every(2).hours.at(:15).do(job)whileTrue:schedule.run_pending()time.sleep(1)阿明眼睛亮了“每周五 17:00 发周报这不就是我上周学的邮件自动化吗”“对把它们串起来就行。”第三步实战——阿明的早间仪式自动化“来把你每天早上那套操作用定时任务串起来。”importscheduleimporttimefromdatetimeimportdatetime# 假设这些是你之前写的函数frommy_scriptsimportexport_data,generate_report,send_summary_emaildefmorning_routine():早间仪式每天 8:00 自动执行print(f\n 早间仪式开始时间{datetime.now()})# 1. 导出昨日数据print( 正在导出数据...)export_data()# 2. 生成报表print( 正在生成报表...)generate_report()# 3. 发送邮件给团队print( 正在发送邮件...)send_summary_email()print(f✅ 早间仪式完成时间{datetime.now()}\n)# 每天早上 8:00 执行schedule.every().day.at(08:00).do(morning_routine)print( 定时任务已启动等待执行...)whileTrue:schedule.run_pending()time.sleep(60)# 每分钟检查一次就够了“这段代码干了啥”“每天早上 8 点自动执行三个步骤导出数据 → 生成报表 → 发邮件。你 8:30 到公司打开邮箱结果已经在等你了。”“time.sleep(60)改成每分钟检查一次不用每秒那么频繁。”阿明感叹“这比我手动操作快多了还不会漏步骤……”第四步APScheduler——高级调度像请了个管家schedule够简单但功能有限。如果你需要更复杂的调度比如同时管理多个任务任务执行历史记录错过时间后补执行分布式部署“那就得请APScheduler出场了——它像个专业管家功能全面但配置稍复杂。”pipinstallapscheduler最简示例fromapscheduler.schedulers.blockingimportBlockingSchedulerfromdatetimeimportdatetimedefjob():print(f⏰ 任务执行{datetime.now()})# 创建调度器schedulerBlockingScheduler()# 添加任务每 5 秒执行一次scheduler.add_job(job,interval,seconds5)# 添加任务每天 9:00 执行scheduler.add_job(job,cron,hour9,minute0)# 启动print( 调度器已启动...)scheduler.start()“BlockingScheduler会阻塞主线程适合独立运行的脚本。”三种触发器“APScheduler有三种触发方式对应不同场景”fromapscheduler.schedulers.backgroundimportBackgroundSchedulerimporttime schedulerBackgroundScheduler()# 1. date特定时间执行一次 # 2024-02-01 10:00:00 执行一次scheduler.add_job(my_job,date,run_date2024-02-01 10:00:00)# 2. interval间隔执行 # 每 30 分钟执行一次scheduler.add_job(my_job,interval,minutes30,start_date2024-01-20 09:00:00,end_date2024-01-20 18:00:00)# 3. cron像 Linux 的 crontab # 每周一到周五的 9:00 和 18:00 执行scheduler.add_job(my_job,cron,day_of_weekmon-fri,hour9,18,minute0)scheduler.start()# 主程序继续干别的whileTrue:time.sleep(1)cron触发器最强大语法和 Linux 的 crontab 一样day_of_weekmon-fri周一到周五hour9,189 点和 18 点minute0整点“你想多复杂的时间规则都能配出来。”第五步系统级定时——让脚本随系统启动“阿明schedule和APScheduler都需要 Python 脚本一直跑着。如果电脑重启了脚本就停了。”“那怎么办”“用系统级的定时任务操作系统帮你盯着。”Windows任务计划程序Windows 自带的’任务计划程序’可以设置每天 8:00 执行某个 Python 脚本开机自动启动即使没登录也能跑配置步骤搜索打开【任务计划程序】创建基本任务 → 填名称触发器每天 8:00操作启动程序程序python.exe的路径比如C:\Python311\python.exe参数你的脚本路径比如D:\scripts\morning_routine.py“这样就算重启电脑到点也会自动执行。”Linux/Maccrontab“Linux 和 Mac 用crontab更简单”# 编辑定时任务crontab-e# 添加一行每天 8:00 执行脚本08* * * /usr/bin/python3 /home/aming/morning_routine.py/home/aming/cron.log21“0 8 * * *就是’每天 8 点 0 分’。后面的 cron.log是把输出记录到日志文件。”第六步日志与监控——让定时任务可追溯“定时任务最大的问题是——它默默跑着出错了你都不知道。”“所以必须加日志和异常处理。”importscheduleimporttimeimportloggingfromdatetimeimportdatetime# 配置日志logging.basicConfig(filenametask.log,# 日志文件levellogging.INFO,# 记录 INFO 级别及以上format%(asctime)s - %(levelname)s - %(message)s)defmorning_routine():try:logging.info( 早间仪式开始)# 模拟任务logging.info( 导出数据...)# export_data()logging.info( 生成报表...)# generate_report()logging.info( 发送邮件...)# send_summary_email()logging.info(✅ 早间仪式完成)exceptExceptionase:logging.error(f❌ 任务执行失败{e})# 出错时发告警下篇教# send_alert(f早间仪式失败{e})schedule.every().day.at(08:00).do(morning_routine)logging.info( 定时任务已启动)whileTrue:schedule.run_pending()time.sleep(60)“logging是 Python 内置的日志模块不用额外安装。”“日志文件长这样”2024-01-22 08:00:00 - INFO - 早间仪式开始 2024-01-22 08:00:02 - INFO - 导出数据... 2024-01-22 08:00:05 - INFO - 生成报表... 2024-01-22 08:00:08 - INFO - 发送邮件... 2024-01-22 08:00:10 - INFO - ✅ 早间仪式完成“出问题了打开task.log一看就知道哪步挂了。”踩坑提醒定时任务的坑老张喝了口咖啡表情认真坑 1任务执行时间重叠“如果你的任务要跑 5 分钟但你设了每 3 分钟执行一次就会重叠执行——两个同样的任务同时在跑可能互相冲突。”解决办法拉长间隔时间加锁机制文件锁、数据库锁用APScheduler的max_instances1限制同时只能跑一个实例坑 2时区问题“服务器可能在美国你在中国时区不一致导致任务跑错时间。”“解决办法”fromapscheduler.schedulers.backgroundimportBackgroundSchedulerfrompytzimporttimezone schedulerBackgroundScheduler(timezonetimezone(Asia/Shanghai))坑 3环境变量缺失“系统级定时任务如 crontab运行时环境变量和用户登录时不一样可能导致 Python 找不到库。”“解决办法在脚本开头指定 Python 路径或者用虚拟环境的完整路径。”坑 4任务跑完进程退出“schedule需要while True循环保持运行。如果你用系统定时任务直接调用脚本脚本跑完就退出了不会持续调度。”解决办法系统定时任务直接调用脚本一次性的或者用一个常驻进程跑schedule/APScheduler一句话总结阿明把定时任务脚本部署到了公司服务器上设置了每天早上 8:00 自动执行。第二天早上 8:30他到公司打开邮箱——报表已经躺在收件箱里了。群里也有机器人发的昨日数据摘要。阿明靠在椅背上喝了口热咖啡。老张路过笑了“感觉怎么样”阿明竖起大拇指“代码比我先上班我到了直接看结果。”老张留下一句话“定时任务就像你家的扫地机器人——你设定好’每天下午 3 点扫’它到点就干活你回家地面就是干净的。你要做的只是偶尔倒个尘盒看看日志。”扩展思考定时任务的应用场景远不止早间仪式数据库备份每天凌晨 3 点自动备份日志清理每周清理一次过期日志防止磁盘爆满数据同步每小时从 A 系统拉数据写到 B 系统定时爬虫每天抓取竞品价格存到 Excel健康检查每 5 分钟检查网站是否挂掉挂了发告警“核心逻辑都一样定时触发 → 执行任务 → 记录日志 → 异常告警。”下集预告下一篇阿明被财务部求助——100 份合同扫描件要合并成一个 PDF还要加水印。老张教他PyPDF2和pdfplumberPDF 操作不再求人。记住定时任务的关键不是’能定时’而是’出错可追溯’。日志和异常处理比定时本身更重要。你们有什么工作是每天/每周固定时间要做的如果能自动化你想先自动化哪个欢迎在评论区聊聊。

相关文章:

用python解放右手(五) 定时任务-让代码比你先上班

定时任务:让代码比你先上班本文基于 Python 3.9,涉及库:schedule、APScheduler。阅读时间约 10 分钟。 安装依赖:pip install schedule apscheduler阿明的"早间仪式" 每天早上 8:30,阿明到公司后的第一件事&…...

从‘你好世界’到模型输入:手把手用PyTorch+Transformers Tokenizer完成文本预处理全流程

从‘你好世界’到模型输入:手把手用PyTorchTransformers Tokenizer完成文本预处理全流程 当你第一次接触自然语言处理(NLP)时,可能会被各种术语和概念搞得晕头转向。但别担心,每个NLP工程师都曾经历过从"Hello Wo…...

Scroll Reverser:如何为Mac用户彻底解决滚动方向混乱问题

Scroll Reverser:如何为Mac用户彻底解决滚动方向混乱问题 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 作为一名Mac用户,你是否经常在触控板和外接鼠标…...

联想拯救者BIOS隐藏功能一键解锁:释放硬件潜能的终极指南

联想拯救者BIOS隐藏功能一键解锁:释放硬件潜能的终极指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirror…...

Path of Building汉化版终极教程:5步从新手到流放之路BD大师

Path of Building汉化版终极教程:5步从新手到流放之路BD大师 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 还在为流放之路复杂的角色构建而烦恼吗?面对英文界面和繁琐的计…...

如何通过BiliTools实现B站视频高效下载与AI智能总结?

如何通过BiliTools实现B站视频高效下载与AI智能总结? 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools Bi…...

别再只会用OpenCV的resize了!手把手教你用NumPy实现图像缩放(Nearest/Bilinear/Bicubic/Lanczos对比)

从零实现图像缩放:四种插值算法的NumPy实战指南 当你第一次调用cv2.resize()时,是否好奇过这个黑盒子内部究竟发生了什么?图像缩放远不止是简单的像素复制或删除,背后隐藏着数学与艺术的完美结合。本文将带你用NumPy亲手实现四种…...

终极指南:5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程

终极指南:5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验任天堂Switch游戏的魅力吗?…...

STK与Python联合仿真实战:构建Walker星座并自动化评估覆盖性能

1. 从零开始:STK与Python联合仿真环境搭建 第一次接触STK和Python联合仿真时,我花了两天时间才把环境配置明白。现在回想起来,其实关键步骤就几个,但当时没人指点确实走了不少弯路。先说说最基础的准备工作,我会尽量把…...

YOLOv5标注数据可视化检查:用Python脚本批量验证你的bounding box坐标转换是否正确

YOLOv5标注数据可视化检查:用Python脚本批量验证你的bounding box坐标转换是否正确 在目标检测项目中,数据标注的质量直接决定了模型的性能上限。许多工程师花费大量时间调整模型结构和超参数,却忽略了最基础的标注数据验证环节。特别是在使…...

终极指南:如何用AI篮球分析工具快速提升投篮命中率

终极指南:如何用AI篮球分析工具快速提升投篮命中率 【免费下载链接】AI-basketball-analysis :basketball::robot::basketball: AI web app and API to analyze basketball shots and shooting pose. 项目地址: https://gitcode.com/gh_mirrors/ai/AI-basketball-…...

2025届毕业生推荐的六大降AI率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作跟内容创作这个领域当中,文字重复率过于高是较为常见的问题。专业降重…...

Windows平台B站观影终极指南:BiliBili-UWP第三方客户端完整使用教程

Windows平台B站观影终极指南:BiliBili-UWP第三方客户端完整使用教程 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在为Windows上观看B站视频时…...

避坑指南:Stata做面板VAR和格兰杰检验时,90%的人都会忽略的5个细节

Stata面板VAR与格兰杰检验实战避坑手册:5个高阶用户必知的技术细节 当你熬夜跑完最后一组面板VAR模型,看着屏幕上那些不显著的系数和宽如长江的置信区间,是否开始怀疑人生?作为经历过无数次模型崩溃又重建的Stata老手,…...

AI核心知识130—大语言模型之 多模态大模型(简洁且通俗易懂版)

如果说我们之前聊的纯文本大模型(如早期的 ChatGPT 或 LLaMA)是极其聪明但被关在小黑屋里的“缸中之脑” (只能靠别人从门缝里递纸条来交流);那么多模态大模型 (Multimodal AI) 就是给这个超级大脑装上了眼睛、耳朵和嘴…...

终极指南:使用LeetDown为iPhone和iPad进行快速降级恢复

终极指南:使用LeetDown为iPhone和iPad进行快速降级恢复 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 你是否拥有一台运行缓慢的iPhone 5s或iPad 4?苹果的…...

告别手动截图!用Lumerical脚本批量导出FDTD仿真数据(附Python处理代码)

告别手动截图!用Lumerical脚本批量导出FDTD仿真数据(附Python处理代码) 在光学仿真领域,时间就是科研生命线。当你在凌晨三点盯着屏幕上第27次重复的"截图-重命名-保存"操作时,是否想过那些被浪费在机械操作…...

AGI可解释性革命,从黑箱到因果推演:符号逻辑嵌入Transformer的4种工程化方案(附GitHub开源框架清单)

第一章:AGI的符号推理与连接主义融合 2026奇点智能技术大会(https://ml-summit.org) 人工通用智能(AGI)的实现路径长期面临“符号主义”与“连接主义”的范式张力。符号系统擅长形式化逻辑推演、可解释性规则表达和组合泛化,而深…...

一次讲透 ABAP 外部调试里的 Request-based Debugging

做过线上问题定位的人,大多都见过这种场景。界面层一切看起来都正常,按钮也点下去了,前台动作也完成了,可后台真正跑到哪台应用服务器、落到哪个用户上下文、最终由哪个 RFC 会话接手,现场支持往往并不透明。资料里给出的那个在线商店例子就特别典型,一本大约 50 美元的书…...

从VGG16到MobileNetV1:我是如何把模型‘塞进’手机的?轻量化实战心得分享

从VGG16到MobileNetV1:移动端模型轻量化实战全解析 第一次尝试把服务器上的VGG16模型部署到手机端时,我遇到了所有移动端开发者都会头疼的问题——模型体积膨胀到500MB,推理速度慢得像老牛拉车,手机发烫到能煎鸡蛋。这让我意识到…...

G-Helper深度解析:华硕笔记本性能控制的轻量化革命

G-Helper深度解析:华硕笔记本性能控制的轻量化革命 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...

AGI数学证明能力测评报告(2026Q1):仅17%模型通过ZFC一致性子集测试,你的系统在第几层?

第一章:AGI数学证明能力测评报告(2026Q1)核心结论发布 2026奇点智能技术大会(https://ml-summit.org) 本季度测评覆盖全球17个主流AGI系统,聚焦形式化定理证明、构造性证明生成与跨公理体系一致性验证三大维度,在Coq…...

Windows 11游戏兼容终极指南:让经典游戏重获新生

Windows 11游戏兼容终极指南:让经典游戏重获新生 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game pr…...

RHEL9.4换Rocky源后,openssl报错别慌!手把手教你修复libs与fips-provider冲突(附EFI启动修复脚本)

RHEL9.4迁移Rocky源后openssl冲突全解:从报错分析到EFI启动修复 最近在帮客户做RHEL9.4到Rocky Linux 9.4的迁移时,遇到了一个棘手的问题——更换软件源后openssl相关组件开始频繁报错,严重时甚至导致系统无法正常启动。这个问题在Rocky官方论…...

从论文到代码:手把手复现CVPR2019人体解析冠军模型SCHP

从论文到代码:手把手复现CVPR2019人体解析冠军模型SCHP 在计算机视觉领域,人体解析(Human Parsing)一直是极具挑战性的研究方向。这项技术需要将人体图像中的每个像素精确分类到不同语义部位,如头发、上衣、裤子等。20…...

深入解析高通cDSP:从硬件架构到性能调优的实战指南

1. 高通cDSP:嵌入式开发的性能加速器 第一次接触高通cDSP是在开发智能门锁的人脸识别模块时,CPU处理1080P图像要300ms,而移植到cDSP后直接降到80ms,功耗还降低了60%。这个经历让我意识到,掌握cDSP就像获得了一把嵌入式…...

终极指南:如何免费永久冻结IDM试用期并彻底告别激活弹窗

终极指南:如何免费永久冻结IDM试用期并彻底告别激活弹窗 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM&…...

如何用OBS StreamFX插件彻底改变你的直播画面质感

如何用OBS StreamFX插件彻底改变你的直播画面质感 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom shaders, youl…...

AGI决策链路可追溯性评估实战:用符号执行+神经溯源图定位规划偏差源头(附开源验证工具链)

第一章:AGI的规划与决策能力评估 2026奇点智能技术大会(https://ml-summit.org) AGI的规划与决策能力并非单一维度指标,而是融合目标分解、多步推理、不确定性建模与动态环境适应的复合能力。当前主流评估框架(如GPQA、ALFWorld、ToolFormer…...

CSS Grid布局完全指南:从入门到精通的响应式设计实战

CSS Grid布局完全指南:从入门到精通的响应式设计实战 ⭐⭐⭐ 💡 摘要: CSS Grid是现代CSS最强大的布局系统!本文从基础概念到高级技巧,全面解析Grid布局的核心用法。包含20个实用案例、响应式设计模式、与Flexbox对比、浏览器兼容性方案。实测数据显示:使…...