Python中定时框架——APScheduler模块

APScheduler是Python的一个强大的定时任务库,支持日期、时间间隔和crontab调度。本文介绍了如何安装APScheduler,以及如何创建cron、interval和date类型的定时任务。示例展示了每5秒向文件写入内容的interval任务,并解释了如何传递函数参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

安装APScheduler框架

pip install apscheduler

以下是我参考网上一些文章,修改的代码

from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
# 输出时间
def job():
	with open('D:\\SampleInfoLog\\test.txt','a+') as f:
		f.write("12-")
    	print 'success'
    	print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval',seconds = 05)
scheduler.start()

job是定时任务到时间后要执行的函数,add_job的第二个参数代表触发器,它管理着作业的调度方式。有3种类型:

  • cron定时调度(某一定时时刻执行)
  • interval 间隔调度(每隔多久执行)
  • date 定时调度(作业只会执行一次)

这里我的demo的意思是使用间隔调度,每隔5s调用job函数往test.txt文件中写入“12-”

如果调用的函数有多个参数怎们办呢?

scheduler.add_job(func, 'cron', hour=23, minute=30, second=45, args
### 使用注解实现 Python 定时任务调度 为了在 Python 中利用注解实现定时任务调度,可以采用 `apscheduler` 库。此库允许通过装饰器定义任务并设置其执行时间表。 #### 导入所需模块 首先安装 `apscheduler`: ```bash pip install apscheduler ``` 接着导入必要的组件: ```python from apscheduler.schedulers.background import BackgroundScheduler from datetime import datetime import time ``` #### 创建带注解的任务函数 下面展示了一个简单的例子,在其中创建了两个带有不同频率的周期性任务,并使用装饰器来指定这些属性。 ```python def job_decorator(func): """A decorator to add cron-like scheduling information.""" func.run_date = 'cron' # Add a property that indicates the function is scheduled. return func @job_decorator def task_1(): print(f'Task 1 executed at {datetime.now()}') @job_decorator def task_2(): print(f'Task 2 executed at {datetime.now()}') ``` 上述代码片段中的 `task_1()` 和 `task_2()` 函数被赋予了一种特殊的标记——即它们应该按照某种计划被执行[^1]。 #### 设置后台调度程序 接下来初始化一个背景调度实例并将之前定义好的任务加入到这个调度里去: ```python sched = BackgroundScheduler() # Schedule jobs using properties added by decorators if hasattr(task_1, 'run_date'): sched.add_job(task_1, trigger='interval', seconds=5) if hasattr(task_2, 'run_date'): sched.add_job(task_2, trigger='interval', minutes=1) sched.start() ``` 这段逻辑检查是否有特定属性存在 (`run_date`) 来判断是否要将该方法注册成定期运行的工作项;然后根据实际需求调整参数以适应不同的调度模式 (比如每五秒一次 vs 每分钟一次)[^4]。 最后保持主线程存活以便让其他线程能够继续工作直到手动停止它为止: ```python try: while True: time.sleep(2) except KeyboardInterrupt: sched.shutdown(wait=False) ``` 这样就完成了一个基于注解驱动的简单版Python定时任务框架的设计与实现了[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值