php做的网站处理速度怎么样,网页制作工具按其制作方式分为,搭建平台要多少钱,cc彩球网站总代理怎么做Apscheduler 介绍
核心组件#xff1a; 调度器、作业存储、执行器、触发器 调度器
BlockingScheduler 阻塞的调度器#xff0c;适用于脚本 BackgroundScheduler 后台调度器#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…
Apscheduler 介绍
核心组件 调度器、作业存储、执行器、触发器 调度器
BlockingScheduler 阻塞的调度器适用于脚本 BackgroundScheduler 后台调度器适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventScheduler 适用于 Gevent 的调度器 TornadoScheduler 适用于 Tornado 的调度器 TwistedScheduler 适用于 Twisted 的调度器。 作业存储 保存作业的地方默认是使用 内存存储也可以持久化到数据库支持redis、mongdb等 执行器 执行作业的工具默认是ThreadPoolExecutor和ProcessPoolExecutor也就是线程池和进程池 触发器 确定何时运行作业主要有三种date、interval、cron date 在特定时间点运行一次也就只运行一次 interval 按指定间隔运行例如每五秒运行 cron 可支持复杂的规格例如每天某个时间点执行每周一执行等 更多详细介绍请转到官网 基本用法
1.创建调度器
from apscheduler.schedulers.background import BackgroundSchedulerscheduler BackgroundScheduler() 2.具体的定时任务方法
def job_function(**kwargs):print(kwargs.get(name, 没有传递名称))print(f定时任务执行了:{kwargs.get(执行时间, datetime.now())}) 3.设置触发器
# scheduler.add_job(job_function, date, kwargs{name: 张三, }, **{run_date: datetime.now() timedelta(seconds1)})scheduler.add_job(job_function, interval, seconds2)# scheduler.add_job(job_function, cron, **{start_date: 2024-06-18 10:38:00, end_date: 2024-06-18 10:38:20, second: */2}) 4.运行定时任务
scheduler.start() 整体代码
from datetime import datetime
from apscheduler.schedulers.background import BackgroundSchedulerdef job_function(**kwargs):print(kwargs.get(name, 没有传递名称))print(f定时任务执行了:{kwargs.get(执行时间, datetime.now())})scheduler BackgroundScheduler()
# scheduler.add_job(job_function, date, kwargs{name: 张三, }, **{run_date: datetime.now() timedelta(seconds1)})# scheduler.add_job(job_function, interval, seconds2)# scheduler.add_job(job_function, cron, **{start_date: 2024-06-18 10:38:00, end_date: 2024-06-18 10:38:20, second: */2})scheduler.add_job(job_function, cron, )
# scheduler.add_job(job_function, cron, **{start_date: 2024-06-18 10:38:00, end_date: 2024-06-18 10:38:20, second: */2})scheduler.start()while True:pass 触发器常用规则
可以使用对应的trigger对象进行建立对应的规则也可以直接用简写方式
trigger对象
from apscheduler.triggers.date import DateTrigger
from apscheduler.triggers.interval import IntervalTrigger
from apscheduler.triggers.cron import CronTrigger 因为这些写法相对繁琐博主更推荐用简写方式所以就不详解展开介绍对象写法就简单给出几个例子
sched.add_job(job_function, triggerDateTrigger(run_datedatetime(2023, 10, 1, 10, 30)))
sched.add_job(job_function, triggerIntervalTrigger(hours2))
sched.add_job(job_function, triggerCronTrigger(day_of_weekmon, hour8,12, minute30)) add_job 可接收的参数
func, triggerNone, argsNone, kwargsNone, idNone, nameNone, misfire_grace_timeundefined, coalesceundefined, max_instancesundefined, next_run_timeundefined, jobstoredefault, executordefault, replace_existingFalse, **trigger_args
func 要运行的函数对象注意是函数对象不是函数名
args和kwargs是传递给需要执行函数的参数
**trigger_args 才是给触发器设置规则的参数 date 支持的规则
可以传入一个时间对象或者是满足时间格式的字符串
时间对象datetime.now()
scheduler.add_job(job_function, date, kwargs{name: 张三,}, **{run_date: datetime.now() timedelta(seconds1)})
效果在当前时间再加一秒后执行 字符串2024-06-18 10:02:00 scheduler.add_job(job_function, date, kwargs{name: 张三,}, **{run_date: 2024-06-18 10:02:00})
效果在2024-06-18 10:02:00执行 interval 支持的规则 weeks (int) – 间隔几周 days (int) – 间隔几天 hours (int) – 间隔几小时 minutes (int) – 间隔几分钟 seconds (int) – 间隔多少秒 start_date (datetime|str) – 开始日期 end_date (datetime|str) – 结束日期 timezone (datetime.tzinfo|str) – 时区 间隔*秒后执行
scheduler.add_job(job_function, interval, seconds2)
效果每两秒执行一次 cron 支持的规则 (int|str) 表示参数既可以是int类型也可以是str类型 (datetime | str) 表示参数既可以是datetime类型也可以是str类型 year (int|str) – 4-digit year -表示四位数的年份如2008年 month (int|str) – month (1-12) -表示取值范围为1-12月 day (int|str) – day of the (1-31) -表示取值范围为1-31日 week (int|str) – ISO week (1-53) -格里历2006年12月31日可以写成2006年-W52-7扩展形式或2006W527紧凑形式 day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) - 表示一周中的第几天既可以用0-6表示也可以用其英语缩写表示 hour (int|str) – hour (0-23) - 表示取值范围为0-23时 minute (int|str) – minute (0-59) - 表示取值范围为0-59分 second (int|str) – second (0-59) - 表示取值范围为0-59秒 start_date (datetime|str) – earliest possible date/time to trigger on (inclusive) - 表示开始时间 end_date (datetime|str) – latest possible date/time to trigger on (inclusive) - 表示结束时间 timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone) -表示时区取值 每周几执行
可以填写 0-6 或者 mon,tue.wed,thu,fri,sat,sun
scheduler.add_job(job_function, cron,**{day_of_week: mon})
效果每周一执行 每天固定时间执行
scheduler.add_job(job_function, cron,**{ hour8, 12, minute30})
效果每天早上8点30分和中午12点和30分运执行 每天时间范围内执行
scheduler.add_job(job_function, cron, **{start_date: 2024-06-18 10:38:00, end_date: 2024-06-18 10:38:20, second: */2})
效果每天 2024-06-18 10:38:00 开始执行至2024-06-18 10:38:20 且每2秒执行一次