第一步:安装APScheduler
第二步:配置APScheduler
| |
| from apscheduler.schedulers.background import BackgroundScheduler |
| |
| |
| def my_job(): |
| print("Hello World") |
| |
| |
| scheduler = BackgroundScheduler() |
| |
| |
| scheduler.add_job(my_job, 'interval', hours=1) |
| |
| |
| scheduler.start() |
add_job的详细配置案例
1.每隔一定时间运行job —— interval
| from apscheduler.schedulers.blocking import BlockingScheduler |
| |
| def my_interval_job(): |
| print("Running my interval job!") |
| |
| scheduler = BlockingScheduler() |
| |
| |
| scheduler.add_job(my_interval_job, 'interval', minutes=2, id='my_interval_job') |
| |
| scheduler.start() |
2.根据Cron时间表运行job —— interval
| from apscheduler.schedulers.blocking import BlockingScheduler |
| |
| def my_cron_job(): |
| print("Running my cron job!") |
| |
| scheduler = BlockingScheduler() |
| |
| |
| scheduler.add_job(my_cron_job, 'cron', hour=10, minute=15, id='my_cron_job') |
| |
| scheduler.start() |
3.限制同时运行的job数量 —— max_instances
| from apscheduler.schedulers.blocking import BlockingScheduler |
| |
| def my_job(): |
| print("Running my job!") |
| |
| scheduler = BlockingScheduler() |
| |
| |
| scheduler.add_job(my_job, 'interval', seconds=5, max_instances=3, id='my_job_with_limited_instances') |
| |
| scheduler.start() |
案例:指定时间段内间隔固定时间执行job
| from apscheduler.schedulers.blocking import BlockingScheduler |
| from datetime import datetime |
| |
| def my_complex_job(): |
| print("Running my complex job!") |
| |
| scheduler = BlockingScheduler() |
| |
| scheduler.add_job( |
| my_complex_job, |
| 'cron', |
| day_of_week='mon-fri', |
| hour=10, |
| minute=15, |
| start_date='2024-06-01', |
| end_date='2024-12-31', |
| week='*/2', |
| misfire_grace_time=3600, |
| coalesce=True, |
| max_instances=2, |
| id='my_complex_cron_job' |
| ) |
| |
| scheduler.start() |
查看job状态信息
| |
| jobs = scheduler.get_jobs() |
| job = scheduler.get_job('my_job_id') |
| |
| for job in jobs: |
| print(f"Job ID: {job.id}") |
| print(f"Name: {job.name}") |
| print(f"Next Run Time: {job.next_run_time}") |
| print(f"Trigger: {job.trigger}") |
| print("-" * 20) |
| |
| |
| from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR |
| |
| def my_listener(event): |
| if event.exception: |
| print(f"The job crashed : {event.job_id}") |
| else: |
| print(f"The job worked : {event.job_id}") |
| |
| scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏