在Python中有很多定时库可以用来编写定时任务,以下是一些常用的定时库:
-
schedule:一个Python的定时任务调度库,可以在指定的时间执行任务。它基于时间间隔来触发任务。
-
APScheduler:一个基于Quartz的Python定时任务调度库,可以执行多种类型的任务,包括函数、方法和cron-like的时间表达式等。
-
celery:一个Python的分布式任务队列,支持异步和定时任务调度。
-
Timer:Python自带的定时器模块,可以设置一个定时器来在一定时间后执行指定的任务。
-
threading.Timer:Python的线程模块提供了一个定时器类,可以在指定时间后启动一个线程来执行任务。
-
Advanced Python Scheduler (APScheduler):一个功能强大的定时任务调度库,可以以多种方式调度任务,包括时间间隔、日期时间、固定时间、Cron-like表达式等。
-
Clockwork:一个基于Django的定时任务调度库,提供了许多预定义的任务,包括备份、清理、发送电子邮件等。
schedule是一个Python的定时任务调度库,可以用于编写各种定时任务。使用schedule库非常简单,以下是一个基本的使用示例:
首先,需要先安装schedule库,可以使用pip安装:
下面是一个完整的schedule库的示例代码,它会每天定时向指定的邮箱发送一封邮件:
import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
# 邮件发送函数
def send_email():
# 邮件设置
from_email = '[email protected]' # 发送邮箱地址
to_email = '[email protected]' # 接收邮箱地址
password = 'your_password' # 发送邮箱密码
subject = 'Daily report' # 邮件主题
text = 'Hello, this is your daily report.' # 邮件正文
# 创建一个包含邮件正文和附件的邮件对象
message = MIMEMultipart()
message['From'] = from_email
message['To'] = to_email
message['Subject'] = subject
# 添加邮件正文
text = MIMEText(text)
message.attach(text)
# 添加图片附件
with open('chart.png', 'rb') as f:
img = MIMEImage(f.read())
message.attach(img)
# 发送邮件
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_email, password)
server.sendmail(from_email, to_email, message.as_string())
server.quit()
# 设置定时任务
schedule.every().day.at('08:00').do(send_email)
# 执行定时任务
while True:
schedule.run_pending()
time.sleep(1)
在这个示例代码中,send_email()函数是实际要执行的任务,它会向指定的邮箱发送一封带有图片附件的邮件。使用schedule库的every().day.at()函数来设置定时任务,在每天的08:00执行send_email()函数。最后使用while循环来执行定时任务,调用schedule.run_pending()函数来检查是否有任务需要执行,然后休眠1秒钟。
python库的简单实例及介绍
python傻瓜式入门
人间清醒
量化交易策略介绍
linux系统相关 - 知乎 (zhihu.com)