python 轻量级定时框架apscheduler,周中定时给自己发送邮件。
时间:2022-07-26
本文章向大家介绍python 轻量级定时框架apscheduler,周中定时给自己发送邮件。,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需求:搜集一些信息,并且每日通过邮件推送给自己。
参考链接:
【干货】APScheduler官方文档翻译: https://www.jianshu.com/p/4f5305e220f0
花10分钟让你彻底学会Python定时任务框架apscheduler: https://blog.csdn.net/somezz/article/details/83104368
python apscheduler 暂停和恢复任务: https://www.jianshu.com/p/1c98cbabbf7e
APScheduler(Python化的Cron)使用总结 定时任务: https://www.cnblogs.com/zhaoyingjie/p/9664081.html
思路:
构造一个定时计划,在指定时间通过smtp服务发送邮件信息。
定时计划使用apscheduler框架。可以轻松的,通过构造triggersd来设置自己的定时任务。
简单例子,对于我们的需求,使用使用cron类触发器:
# 使用后台运行,非阻塞
scheduler = BackgroundScheduler()
# 添加任务 - 3类
# 添加任务 - 1:在指定时间执行
scheduler.add_job(send_job, 'date', run_date=datetime.datetime.now() + datetime.timedelta(seconds=5), args=['text'])
# 添加任务 - 2:间断时间执行
scheduler.add_job(send_job, 'interval', seconds=3,args=['text'])
# 添加任务 - 3: 周期性指定时间执行
scheduler.add_job(send_job,"cron", day_of_week='*', hour='9', minute='20', second='*/2',args=['text'])
# 启动任务
sched.start()
# 中断任务,wait=False表示立刻中断
sched.shutdown(wait=True)
再结合发送邮件的功能,构造定时发送邮件任务。
# 执行邮件发送
# subtype为发送的邮件内容类型,此处默认为Html
def send_mail(mail_content='test',subtype='html',host_server = 'smtp.126.com',sender = '***@126.com',pwd = '***',
sender_mail = '***@126.com',receiver = '***@126.com',mail_title = 'title'):
try:
# ssl登录
smtp = SMTP_SSL(host_server)
# set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
smtp.set_debuglevel(0)
smtp.ehlo(host_server)
smtp.login(sender, pwd)
msg = MIMEText(mail_content, subtype, 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_mail
msg["To"] = receiver
smtp.sendmail(sender_mail, receiver, msg.as_string())
smtp.quit()
return True
except Exception as e:
print('发送失败',e)
return False
对于如果是对于数据表格,还可以构造成Html内容进行发送DataFrame类型。
# 构建表格内容
def create_table_content(data):
d='' #表格内容
# 标题
t = '<tr>'
for k in range(len(columns)):
t = t + '<td>' + columns[k] + '</td>'
t = t + '</tr>'
d = d + t
#数据内容
for i in range(len(data)):
t = '<tr>'
for k in range(len(columns)):
t = t + '<td>' + str(data.iloc[i,k]) + '</td>'
t = t + '</tr>'
d=d+t
html = """
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<div id="container">
<p><strong>tips:</strong></p>
<div id="content">
<table border="2" bordercolor="red" cellspacing="2">
"""+d+"""
</table>
</div>
</div>
</div>
</body>
</html>
"""
return html
- Cobbler自动化批量安装linux服务器的操作记录
- Twemproxy——针对MemCached与Redis的代理
- 谁适合学Python?学了Python可以做什么工作?
- webservice今日遇到的二个问题:DataTable + Namespace
- php安全配置记录和常见错误梳理
- Flex:地图缩放平移效果(简易版)
- Mongodb副本集+分片集群环境部署记录
- 线上mongodb 数据库用户到期时间修改的操作记录
- 微信小程序“授权失败”场景的处理
- 动软.net代码生成器 win2008 r2下无法连接oracle,以及vs2008模板丢失的解决
- ASP.NET Web API 支持 CORS
- oracle odp.net 32位/64位版本的问题
- Redis+TwemProxy(nutcracker)集群方案部署记录
- 金融科技新常态,未来开启拼“硬实力”阶段
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode树之二叉树的层平均值
- C++雾中风景15:聊聊让人抓狂的Name Mangling
- 【Java】15 File 类
- seaborn更高效的统计图表制作工具
- 牛客2019跨年AK场题解(一)
- qiankun proxySand 沙箱
- MATLAB 与 C 语言的混合编程实战之辛普森积分法、自适应辛普森积分
- Java那些事之JDK环境配置及集成开发环境Eclipse安装
- 敲代码、作诗、写论文无所不能?史上最大AI模型GPT-3霸榜Github
- 数据结构实验——校园导游 实现最小生成树+最短路
- Salesforce LWC学习(二十六) 简单知识总结篇三
- 【Java】13 异常
- 【Java】14 多线程
- 【Java】16 字节流
- 【Java】17 字符流