Python任务调度的几种方式

目录

1、通过time.sleep(n)

2、通过Linux Crontab

3、通过APScheduler

4、通过AirFlow框架


1、通过time.sleep(n)

例如,写个while(True)循环,每次执行完程序休眠1小时:time.sleep(3600),以间接达到定时调度的效果。

这是最简单也是最笨的方式,会阻塞当前线程,而且无法控制任务准确的执行时间,不推荐用于生产环境中的任务调度。

2、通过Linux Crontab

Linux中的crontab是一个用于设置周期性被执行的任务的工具,会在指定的时间自动运行命令。

Crontab的基本组成:
用户crontab文件:每个用户都可以编辑自己的crontab文件,该文件通常位于/var/spool/cron/crontabs/目录下。
系统crontab文件:位于/etc/cron.d/目录,用于设置系统级别的定时任务。
cron目录:/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/目录用于存放需要每小时、每天、每周、每月执行的脚本。
crontab文件由一系列的条目组成,每个条目指定一个任务及其运行的时间。每个条目通常包含六个字段,分别代表分钟、小时、日期、月份、星期几和要执行的命令。

Crontab命令格式:

分钟 小时 日期 月份 星期几 命令
分钟:0-59
小时:0-23
日期:1-31
月份:1-12(或使用月份名称)
星期几:0-7(0和7都代表星期日,或使用三个字母的简写名称)

Crontab的特殊字符:

*:代表所有可能的值,例如*在分钟字段中表示每一分钟。
,:列出分隔的值,例如1,3,5在小时字段中表示1点、3点和5点。
-:指定一个范围,例如1-5在分钟字段中表示从1到5分钟。
/:指定时间间隔,例如*/10在分钟字段中表示每10分钟。

Crontab的使用:

编辑crontab:使用crontab -e命令编辑当前用户的crontab文件。如果这是第一次使用crontab,系统会提示你选择一个文本编辑器。
查看crontab:使用crontab -l命令列出当前用户的crontab文件内容。
删除crontab:使用crontab -r命令删除当前用户的crontab文件。

示例:

0 0 * * * /root/anaconda3/envs/test/bin/python /home/py/test.py

以上命令表示Linux系统会在每天的午夜0点0分运行/home/py/test.py脚本,使用的是Anaconda中的test虚拟环境。

注意:应确保脚本有执行权限,另外crontab中的命令应使用绝对路径。

3、通过APScheduler

APScheduler(Advanced Python Scheduler)是一个强大的、基于Python的定时任务调度库,它允许用户以多种方式安排任务执行,包括固定时间间隔、定时日期以及基于CRON表达式的调度。APScheduler支持多种存储后端来持久化任务,也支持多种执行器来运行任务,例如直接在进程中运行,或者通过线程池来运行。

from apscheduler.schedulers.background import BlockingScheduler

def func():
    pass
    
if __name__ == '__main__':
    scheduler = BlockingScheduler(timezone='Asia/Shanghai')
    scheduler.add_job(func, 'interval', minutes=5, start_date='2024-03-22 15:30:00' , end_date='2099-12-31 00:00:00')
    scheduler.start()

在以上示例中,每5分钟执行一次func()。

4、通过AirFlow框架

Apache Airflow是一个强大的开源工作流自动化和管理平台,用于编程地编写、调度和监控工作流。Airflow使用Python语言开发,被用于构建、监控和调度复杂的数据处理管道。其工作流被表示为有向无环图(DAGs),其中节点代表任务,边代表任务之间的依赖关系。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值