Crontab和APScheduler

Python 定时任务(schedule, Apscheduler, celery, python-crontab) 背景 最近有个需求,需要实现一个定时或定期任务的功能,需要实现每月、每日、每时、一次性等需求,必须是轻量级不依赖其它额外组件,并能支持动态添加任务。 定时任务库对比 根据上面需求,从社区中找到了几个 Python 好用的任务调度库。有以下几个库: schedule:Python job scheduling for humans. 轻量级,无需配置的作业调度库 python-crontab: 针对系统 Cron 操作 crontab 文件的作业调度库 Apscheduler:一个高级的 Pyth 阅读详情

APScheduler

AScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期,固定时间间隔及crontab类型的任务,并且可以持久化任务,并以daemon方式运行应用。

在Django使用APScheduler

安装包:

​ pip install apscheduler

​ pip install django-apscheduler

注册使用
  • 在配置文件中的INSTALL_APPS中注册定时任务
  • 对job的操作
    • add_job():会返回一个apscheduler.job.Job的实例,可以用来改变或者移除job。
    • scheduler_job():只适应于应用运行期间不会改变的job
  • 移除job
    • remove_job():使用jobID移除
    • job.remove():使用add_job()返回实例
迁移

​ migrate会生成两个表:django-apscheduler_djangojob,django_apscheduler_djangojobexecution,用来管理所需要的定时任务

具体实现
  • 1、可能会出现异常,所以首先需要使用异常捕获

  • 2、创建调度器的实例化对象scheduler=BackgroundScheduler()

  • 3、声明要使用的调度器scheduler.add_jobstore(DjangoJobStore),"default")

  • 4、使用装饰器的形式,为要定时执行的任务注册并设置循环方式,调度器,实现限制等

    @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time')·
            def test_job():
               t_now = time.localtime()
               print(t_now)
    
  • 5、监控任务,使用django_apscheduler.jobstores提供的register_events监控任务:register_events(scheduler)

  • 6、开启调度器:scheduler.start()

  • 7、如果报错,调度器就立即停止执行:scheduler.shutdown()

Crontab

使用django

  • 前提
    django_crontab必须在Linux的crontab开启的情况下才可以使用,不然会出现不执行的情况
  • 安装
    • pip install django-crontab
  • 注册app
    • INSTALLED_APPS = ('django_crontab',...)
  • 配置settings.py
    • CRONJOBS = [('*/5 * * * *', '任务路径.任务函数名','>>/home/book.log')]

    • 参数说明:‘*/5 * * *’ 表示五分钟一次,而django-crontab是调用Linux的crontab.
      • 第一个参数:代表执行时间或者周期
        • 时间的顺序为分->时->天->周->月
      • 第二个参数:代表需要定时执行的函数(路径+函数名)
      • 第三个参数:输出log信息的路径+log文件
  • 启动使用
    • 启动
    • python manage.py crontab add

    • 显示当前的定时任务
    • python manage.py crontab show

    • 删除所有定时任务
    • python manage.py crontab remove

    • 编辑定时任务
    • crontab -e

    • 查看定时任务
    • crontab -l

  • 常见的参数
    • "*"表示可选的所有
    • "/"表示'每',比如若第一个参数为/5,就是五分钟一次
定时运行Python脚本的三种亲测方案:任务计划程序、crontab与APScheduler 在自动化运维和数据处理场景中,定时调度Python脚本是一项高频且基础的需求。无论是定时爬虫、数据备份还是量化策略执行,稳定可靠的定时任务机制都能显著提升工作效率。任务调度本质上涉及两大层面:操作系统级调度(如Windows任务计划程序与Linux的crontab)和应用级调度(如Python的APScheduler)。前者依托系统守护进程,具备高可靠性与可持久化特性;后者将调度逻辑融入代码,提供秒级触发和跨平台可移植性。理解不同调度器的原理、触发规则与执行环境差异,是解决脚本运行异常、日志缺失等问题的关键 阅读详情

相关推荐

定时爬虫任务调度实战:用APScheduler或crontab定时抓取

本文介绍了两种实现爬虫定时任务的方法:Python的APScheduler库和Linux系统的crontab工具。APScheduler灵活易用,适合Python项目内部调度;crontab系统级稳定,适合简单脚本定时执行。文章通过示例代码展示了两种方式的具体实现,对比了它们的优缺点,并提供了热门新闻抓取的实战案例。最后强调了任务幂等性、异常处理和日志记录等最佳实践,帮助开发者选择适合的工具实现稳定可靠的爬虫定时任务。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1394

定时任务:APSchedule 和 crontab

定时任务 一般分为两种: 1.静态定时任务,一开始就知道需要在什么时候执行。 可以选择crontab 和 APScheduler 2.动态定时任务,一开始并不知道要在什么时间点执行。 这种情况,crontab就不方便了,常用APScheduler. APScheduler 一、APScheduler介绍 1,作用: APScheduler(advanceded python scheduler):...

小逗的博客 1913

张正友标定法_单目-线激光三维扫描系统中光刀平面的标定

单目-线激光三维扫描系统中光刀平面的标定线结构光有结构简单、精度高、测速快等特点,被广泛应用于三维重建领域。线结构光三维扫描系统由一个相机和一个线结构光投射器构成,线结构光投射器将线结构光投射到被测物体表面,相机采集带有线激光的被测物体图像,根据相机和线激光投射器间的相对位置关系,使用激光三角法计算出激光线上的点在相机坐标系下的坐标。激光三角法原理如下图所示,线激光投射的扇形区域可以看作是一个平面...

weixin_39616379的博客 1074

定时任务框架APScheduler学习详解

APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第一时间想到的是利用time模块的time.sleep()方法使程序休眠来达到定时任务的目的,虽然这样也可以,但是总觉得不是那么的专业,^_^所以就找到了python的定时任务模块APSchedule...

weixin_30950887的博客 326

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 196

GPU大规模集群运维

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的通用并行计算平台和程序模型,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。CUDA官方文档CUDA的软件环境允许开发者使用C++等高级编程语言开发程序。

weixin_42795092的博客 1740

定时任务:crontab、apscheduler、schedule、sched2

crontab 定时任务、Python 定时任务框架 apscheduler

freeking101的博客 4258

别再折腾虚拟机了!手把手教你用WSL2在Windows 11上安装Kali Linux(含汉化与图形界面)

本文详细介绍了如何在Windows 11上通过WSL2安装和配置Kali Linux,包括汉化与图形界面设置。通过WSL2,用户可以享受接近原生性能的Linux体验,同时保持与Windows系统的无缝集成,特别适合网络安全爱好者和开发者。文章还提供了常见问题解决和性能优化建议,帮助用户高效使用Kali工具集。

weixin_42525369的博客 323

crontab和apscheduler自动任务

本次介绍两种自动任务,一种为linux自动任务crontab,另一种是基于python自动任务apscheduler。**

Codeoooo 博客 1734

Android 12高通thermal-engine调试实战:如何快速开启debug日志并解决CPU降频问题

本文详细介绍了Android 12高通thermal-engine的调试实战,包括如何快速开启debug日志、解读关键日志信息以及解决CPU降频问题。通过优化配置文件和调整温控策略,开发者可以有效提升设备性能,避免因温度管理导致的性能瓶颈。

i3j4k5的博客 307

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 308

Apscheduler:定时任务框架【提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务;基于这些功能,我们可以很方便的实现一个python定时任务系统】

APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便;提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务;基于这些功能,我们可以很方便的实现一个python定时任务系统。

u013250861的博客 2425

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

利用ENVI处理TIF文件,把多个tif整合到一个完整的tif,例如2003-2011年的tif整合到一个tif上。

unique_sir的博客 1万+

定时任务crontab和APScheduler——页面静态化

1、什么是“页面静态化”? 答:页面指的是完整的html页面(模版+动态数据)。 静态化指的就是,提前渲染出完整的html页面,以静态文件的形式存起来,那么下一次浏览器访问的时候,直接返回该静态文件就可以了。避免频繁地渲染页面; #mermaid-svg-1ZJEJoUxzFuaB94o .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#

user_san的博客 494

软件设计师---计算机系统

软件设计师---计算机系统

我从不打没有准备的仗! 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

定时任务(APScheduler与crontab)

APScheduler学习讲解 python调度使用APScheduler crontab定时任务 linux的crontab 正常使用APSscheduler,像10天1次的用crontab

weixin_44220464的博客 1218

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

django 定时任务 django-crontab & APScheduler 使用

1、 pip install django-crontab 2、 settings.py INSTALLED_APPS => INSTALLED_APPS = ( 'django_crontab', ... ) 3、编写函数 3.1、new file under appname, named cron.py 3.2、add the following codes in...

水野与小太郎的博客 596

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

crontab或apscheduler定时任务设置

定时任务设置 一、Linux 设置定时任务crontab命令 示例如下: crontab -e # 进入定时任务编辑 0 6 * * * python3 predict.py >> /home/pi/logs/predict.log 2>&1 定时说明: 定时设置顺序分别为分、时、天、月、星期、命令。 星号(*):代表所有可能的值。 逗号(,):可以用逗号隔开的值指定...

qq_29153321的博客 867

Python定时任务schedule/APScheduler/Crontab 原理与落地实践

Python定时任务方案对比与实战指南:针对schedule、APScheduler和Crontab三种主流方案,从核心原理到落地实践进行详细解析。schedule适合简单任务,轻量但不支持持久化;APScheduler功能全面,支持分布式和持久化;Crontab是系统级方案,稳定性最高但灵活性较差。文章提供实测数据对比和可复用代码示例,帮助开发者根据需求选择最佳方案,避免常见踩坑。关键差异包括适用场景、并发能力、分布式支持和稳定性等,为Python定时任务开发提供实用参考。

这里是数字化与人工智能的 “实验场” 与 “瞭望台” 1232

Python 数据管线调度系统选型:从 Crontab 到 APScheduler 的平滑过渡

在很多中小型数据团队的发展初期,自动化定时任务通常是从 Linux 系统的 crontabcrontab -e但随着业务发展,任务从三五个增加到四五十个,依赖关系从单任务演变为“A 任务跑完且成功后才能触发 B 任务”时,crontabcrontab很多团队一看到这个问题,就想立刻上重量级的或。但对于人员有限的小团队,Airflow 庞大的 Postgres + Redis + Webserver + Scheduler 架构,运维复杂度极高。今天我们分享如何利用,在轻量与生产级调度之间实现平滑过渡。

好代码自己会说话,烂代码才需要注释来圆谎 2082

Django定时任务选型指南:crontab与APScheduler实战对比

定时任务是Web应用的基础能力,其本质是基于时间触发的自动化逻辑执行机制。在Django生态中,任务调度需兼顾框架上下文、多进程部署、失败重试与可观测性等工程要求。crontab作为系统级工具,以零依赖、高稳定性见长,适合低频、短时、弱耦合的运维类任务;而APScheduler作为嵌入式Python调度器,深度集成Django ORM、信号与配置,适用于分钟级、需运行时上下文的业务逻辑。二者并非替代关系,而是互补方案——关键在于根据任务频率、执行时长、失败容忍度及部署架构进行精准画像。本文结合真实项目场景,

weixin_32932149的博客 300

linux crontab任务出错,python定时任务框架apscheduler

前言说到定时任务,你会想起 linux 自带的 crontab ,windows 自带的任务计划,都可以实现守时任务。没错,操作系统基本都会提供定时任务的实现,但是如果你想要更加精细化的控制,或者说任务程序需要跨平台运行,最好还是自己实现定时任务框架,Python 的 apscheduler 提供了非常丰富而且方便易用的定时任务接口。本文介绍如何使用 apscheduler 实现你的定时任务。ap...

weixin_39803022的博客 495

python 查看所有python的路径;电脑闹钟和定时执行python程序 APScheduler;crontab定时执行工具

#本文也是两块内容 1.python电脑闹钟 import winsound import time my_hour = input('请输入时:') my_minute = input('请输入分:') print('您的闹铃已设置成功!等待它叫醒你吧~~~~') while True: current_time = time.strftime('%H:%M', time.local......

weixin_42357472的博客 1848

从crontab到APScheduler:Python定时任务生产落地

定时任务是运维自动化中让脚本按计划稳定执行的基础能力,其核心在于调度器、触发器、执行器与作业存储的分工协作:触发器定义执行节奏,执行器承载任务运行,作业存储保存任务状态,并通过并发控制、错过执行宽限和失败重试等机制降低雪崩风险。相比仅负责拉起进程的crontab,纯Python调度方案APScheduler把任务生命周期纳入代码管理,具备秒级精度、运行期动态增删改、结构化日志与事件监听等工程价值,适合日志清理、巡检、报表生成、数据同步等单机到小集群场景。围绕APScheduler的组件选型、持久化配置、mi

weixin_29611239的博客 241

Python定时任务框架APScheduler(类似crontab)

估计好多朋友Linux中的crontab定时任务并不陌生,其实python中也是有定时任务框架的,接下来一起看看吧。 Linux 定时任务crontab 简介: APScheduler(Advanced Python Scheduler)是一个轻量级的Python定时任务调度框架(Python库)。 APScheduler有三个内置的调度系统,其中包括: cron式调度(可选开始/结束时间) 基于间隔的执行(以偶数间隔运行作业,也可以选择开始/结束时间) 一次性延迟执行

qq_654603797 1268
上一篇: 面试之Celery
下一篇: HTTP请求的发起和结束
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值