请看下面的攻略步骤。
准备工作
- 安装Apscheduler模块:在终端下输入命令
pip install apscheduler
即可。
基本使用
- 首先导入Apscheduler相关模块
python
from apscheduler.schedulers.blocking import BlockingScheduler
- 实例化一个调度器
python
scheduler = BlockingScheduler()
- 定义一个需要执行的任务
python
def job():
print("I am a job")
- 添加任务到调度器,并设置定时规则。
Apscheduler支持多种方式的定时规则:
scheduler.add_job(job, 'interval', seconds=10)
:10秒执行一次scheduler.add_job(job, 'cron', hour='1-3,7-9')
:每天的1~3点和7~9点都会执行scheduler.add_job(job, 'date', run_date='2020-07-01 00:00:00')
:在指定日期时间执行
示例:
python
scheduler.add_job(job, 'interval', seconds=10)
- 开始运行调度器
python
scheduler.start()
运行之后,需要手动终止调度器才能停止执行。
python
scheduler.shutdown()
示例1
我们来一个简单的每秒钟输出时间的示例代码:
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def job():
print(datetime.datetime.now())
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', seconds=1)
scheduler.start()
示例2
我们来一个复杂的示例,定时向某个邮箱发送邮件。
import smtplib
from email.mime.text import MIMEText
from apscheduler.schedulers.blocking import BlockingScheduler
def send_email():
smtp_server = 'smtp.qq.com'
from_addr = 'xxx@qq.com'
to_addr = 'xxx@qq.com'
username = 'xxx@qq.com'
password = '********************'
content = '这是一封通过python自动发送的邮箱'
msg = MIMEText(content, 'html', 'utf-8')
msg['Subject'] = '这是一封来自python的测试邮件'
msg['From'] = 'python自动化邮件发送<%s>' % from_addr
msg['To'] = to_addr
mail = smtplib.SMTP(smtp_server, 25)
mail.login(username, password)
mail.sendmail(from_addr, [to_addr], msg.as_string())
mail.quit()
scheduler = BlockingScheduler()
scheduler.add_job(send_email, 'cron', hour='9-21', minute='*/10')
scheduler.start()
这个示例代码的意思是,在每天的9点到21点之间,每隔10分钟执行一次send_email
函数,发送一封测试邮件到指定邮箱。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 基于Apscheduler实现定时任务 - Python技术站