Python定时任务APScheduler的实例详解
本文介绍如何使用Python库APScheduler实现定时任务的设置与管理,并提供两个示例说明。
安装APScheduler
可使用pip命令进行安装,如下:
pip install apscheduler
实现定时任务
基本概念
APScheduler中的最基本概念是调度器,每个调度器中都可以包含多个任务。其中,每个任务都拥有它自己的触发器,用于设定任务的执行时机。
示例1:定时打印当前时间
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
def job():
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', seconds=5)
scheduler.start()
解析如下:
- blocking schedulers是一种简单但功能强大的调度器。
- 通过定义一个名为“job”的函数,该函数每隔5秒钟就会执行一次,以执行打印当前时间的操作。
- 调度器在添加完任务后,通过开始(start)方法启动调度器。
示例2:使用Cron表达式实现定时发送邮件
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email():
print('Sending email...')
mail_host = 'smtp.163.com'
mail_user = 'example@163.com'
mail_pass = 'password'
sender = 'example@163.com'
receivers = ['example@gmail.com', 'example@qq.com']
content = '恭喜您,报告已生成!'
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = Header("客户服务中心", 'utf-8')
message['To'] = Header("客户", 'utf-8')
message['Subject'] = Header("报告附件", 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25为SMTP端口号
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print('邮件发送成功!')
except Exception as e:
print('邮件发送失败!')
print(str(e))
scheduler = BlockingScheduler()
scheduler.add_job(send_email, 'cron', day_of_week='5', hour='18', minute='0')
scheduler.start()
解析如下:
- 每周五下午6点钟发送邮件。
- 使用smtplib库发送邮件。
- 在此,我们使用标准的Cron表达式来执行定时任务。表达式中的day_of_week表示周几,hour表示小时数,minute表示分钟数。
- 同样地,添加任务后,开始调度器,使其运行。
总结
APScheduler是一个非常有用的库,可为Python开发者提供强大的定时任务支持。本文中提供两个示例说明其用法,但实际上,APScheduler还具有许多其他有用的功能,可以满足您定制的所有需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python定时任务APScheduler的实例实例详解 - Python技术站