广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Python怎么实现定时任务
  • 751
分享到

用Python怎么实现定时任务

2023-06-15 09:06:46 751人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关用python怎么实现定时任务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、发送消息import smtplibfrom em

本篇文章给大家分享的是有关用python怎么实现定时任务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、发送消息

import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerdef send_massage(text):    from_addr = '2469784691@qq.com'  # 邮件发送人账号    to_addrs = '2469784691@qq.com'  # 接收人邮件账号,可以写自己的    qqCode = 'ohkp123fmsldiji'  # 授权码(这个要填自己获取到的)    stmp = smtplib.SMTP_SSL('smtp.qq.com', 465)# 配置服务器    stmp.login(from_addr, qqCode)#发送人登陆    message = MIMEText(text, 'plain', 'utf-8')  # 发送的内容    message['From'] = Header("你的爱人", 'utf-8')  # 发件人    message['To'] = Header("老婆", 'utf-8')  # 收件人    subject = '每天都给你发消息'#主题    message['Subject'] = Header(subject, 'utf-8')  # 邮件标题    try:        stmp.sendmail(from_addr, to_addrs, message.as_string())# 发送    except Exception as e:        print('邮件发送失败--' + str(e))send_massage("因为痛苦太有价值,因为回忆太珍贵,所以我们更要继续往前走")

如图,这下,发送消息的函数已经有了,然后我们继续来看。

二、定时发送消息

女朋友说:我要你每天早上8点,给我发送一条消息。

A方案(无装饰器,传参)

a、不传参

模块只需要导入import schedule 

schedule.every().day.at("8:00").do(send_massage)#不传参数while True:#循环控制 schedule.run_pending()#run_pending:运行所有可以运行的任务time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

就这么搞定了,然后女朋友又说了,你怎么没有给我发送内容。

好嘛,参数没传。

b、传参

schedule.every().day.at("8:00").do(send_massage,text="内容")#传参数,多个就传多个

B方案(有装饰器,传参)

a、不传参

from schedule import *@repeat(every().day.at("8:00"))#在所需函数前添加def send_massage(text):…while True:#循环控制    run_pending()#run_pending:运行所有可以运行的任务    time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

b、传参

from schedule import *@repeat(every().day.at("8:00"),text="内容")#在所需函数前添加,参数多个就传多个def send_massage(text):…while True:#循环控制    run_pending()#run_pending:运行所有可以运行的任务    time.sleep(1)#防止运算速度过快,添加等待。如果不添加可能会导致计算机卡顿。Cpu直线飙升

三、多线程发送消息

好了,现在女朋友的需求又变了,她说:我要你每天早上8:00给我发早安,晚上八点给我发晚安。中午你也还要发消息给我。

A方案(无装饰器,传参)

a、不传参

因为需要使用多线程,那肯定要使用模块threading

import threadingimport schedule需要添加一个多线程的函数,def run_threaded(func):    job_thread = threading.Thread(target=func)    job_thread.start()schedule.every().day.at("8:00").do(run_threaded,send_message)#线程1schedule.every().day.at("20:00").do(run_threaded,send_message)#线程2,while True:    schedule.run_pending()    time.sleep()

b、传递参数

需要给线程传递参数,再通过线程把参数传给函数:

def run_threaded(func,text):    job_thread = threading.Thread(target=func,args=(text,))    job_thread.start()schedule.every().day.at("8:00").do(run_threaded,send_message,text="内容")#线程1schedule.every().day.at("20:00").do(run_threaded,send_message,text="内容")#线程2while True:    schedule.run_pending()    time.sleep(1)

B方案(有装饰器,传参)

a、不传参

装饰器不再使用对应函数上方,而使用在启动多线程函数的上方,添加一个装饰器表示一个任务,多添加几个就是多个了,是不是很神奇 

@repeat(every().day.at("8:00"),func=send_massage)@repeat(every().day.at("20:00"),func=send_massage)def run_threaded(func):    job_thread = threading.Thread(target=func)    job_thread.start()while True:    run_pending()    time.sleep(1)

 b、传参

传参的方式也大同小异,装饰器不再使用对应函数上方,而使用在启动多线程函数的上方,如下:

@repeat(every().day.at("8:00"),func=send_massage,text="2354")@repeat(every().day.at("20:00"),func=send_massage,text="235412341234")def run_threaded(func,text):    job_thread = threading.Thread(target=func,args=(text,))    job_thread.start()while True:    run_pending()    time.sleep(1)

用Python怎么实现定时任务

四、总结

1、常用方法名:

"""second,秒;secondsminute,分钟;minuteshour,时;hoursday,天;daysmonday,周一tuesday,周二wednesday,周三thursday,周四friday,周五saturday,周六sunday,周日主要方法:at  在……时候to …到…until   直到……时候"""

2、常用函数方法:

a、无装饰器

schedule.every(10).seconds.do(job)#每10秒运行一次schedule.every(10).minutes.do(job)#每隔十分钟执行一次任务schedule.every().hour.do(job)#每小时运行一次schedule.every().day.at("10:30").do(job)##每天的10:30执行一次任务schedule.every(5).to(10).minutes.do(job)#每隔5到10分钟执行一次任务schedule.every(5).to(10).days.do(job)#每隔5到10天执行一次任务schedule.every().monday.do(job)#每周一的这个时候执行一次任务schedule.every().wednesday.at("13:15").do(job)#每周三13:15执行一次任务schedule.every().minute.at(":17").do(job)#每分钟在第17秒的时候执行任务schedule.every().hour.at(":17").do(job)#每小时在第17分钟的时候执行任务schedule.every().hours.until("18:30").do(job)# 每个小时运行作业,18:30结束schedule.every().hours.until("2030-01-01 18:33").do(job)# 每个小时运行作业,2030-01-01 18:33后停止schedule.every().hours.until(timedelta(hours=8)).do(job)# 每个小时运行作业,8个小时后停止

b、有装饰器

@repeat(every(10).seconds)#每10秒运行一次@repeat(every(10).minutes)#每隔十分钟执行一次任务@repeat(every().hour)#每小时运行一次@repeat(every().day.at("10:30"))##每天的10:30执行一次任务@repeat(every(5).to(10).minutes)#每隔5到10分钟执行一次任务@repeat(every(5).to(10).days)#每隔5到10天执行一次任务@repeat(every().monday)#每周一的这个时候执行一次任务@repeat(every().wednesday.at("13:15"))#每周三13:15执行一次任务@repeat(every().minute.at(":17"))#每分钟在第17秒的时候执行任务@repeat(every().hour.at(":17"))#每小时在第17分钟的时候执行任务@repeat(every().hours.until("18:30"))# 每个小时运行作业,18:30结束@repeat(every().hours.until("2030-01-01 18:33"))# 每个小时运行作业,2030-01-01 18:33后停止@repeat(every().hours.until(timedelta(hours=8)))# 每个小时运行作业,8个小时后停止

3、总结思路

其实单线程和多线程是相通的,重要的是融汇贯通。先掌握单线程,多线程也就迎刃而解了。

多线程唯一不同的不再是使用已确定的函数,而是转变为新开启一个线程去执行我们需要的函数。思路如图:

用Python怎么实现定时任务

五、定时给女朋友发送消息,完整代码

定时每天早上,晚上发送消息完整代码

import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport threadingfrom schedule import *def send_massage(text):    from_addr = '2469784691@qq.com'  # 邮件发送人账号    to_addrs = '2469784691@qq.com'  # 接收人邮件账号,可以写自己的    qqCode = 'ohkpw123fmsldiji'  # 授权码(这个要填自己获取到的)    stmp = smtplib.SMTP_SSL('smtp.qq.com', 465)# 配置服务器    stmp.login(from_addr, qqCode)#发送人登陆    message = MIMEText(text, 'plain', 'utf-8')  # 发送的内容    message['From'] = Header("你的爱人", 'utf-8')  # 发件人    message['To'] = Header("老婆", 'utf-8')  # 收件人    subject = '每天都给你发消息'#主题    message['Subject'] = Header(subject, 'utf-8')  # 邮件标题    try:        stmp.sendmail(from_addr, to_addrs, message.as_string())# 发送    except Exception as e:        print('邮件发送失败--' + str(e))@repeat(every().day.at("10:00"),func=send_massage,text="早上好")#at之后时间不能小于当前时间。@repeat(every().day.at("20:00"),func=send_massage,text="晚上好")def run_thread(func,text):#多线程    thread = threading.Thread(target=func,args=(text,))    thread.start()if __name__ == '__main__':    while True:        run_pending()        time.sleep(1)

以上就是用Python怎么实现定时任务,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

--结束END--

本文标题: 用Python怎么实现定时任务

本文链接: https://www.lsjlt.com/news/279270.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Python怎么实现定时任务
    本篇文章给大家分享的是有关用Python怎么实现定时任务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、发送消息import smtplibfrom em...
    99+
    2023-06-15
  • python怎么实现定时任务
    这篇文章主要介绍python怎么实现定时任务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Python实现定时任务有些时候我们需要每隔一段时间就要执行一段程序,或者是往复循环执行某一个任务。比如博主在上篇文章讲的爬...
    99+
    2023-06-14
  • Python实现定时任务
    Python下实现定时任务的方式有很多种方式。下面介绍几种 循环sleep: 这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。...
    99+
    2022-06-04
    Python
  • Python怎么用sched模块实现定时任务
    本文小编为大家详细介绍“Python怎么用sched模块实现定时任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么用sched模块实现定时任务”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。牛刀小...
    99+
    2023-07-05
  • python包之APScheduler定时任务怎么实现
    这篇文章主要介绍“python包之APScheduler定时任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python包之APScheduler定时任务怎么实现”文章能帮助大家解决问题。...
    99+
    2023-06-30
  • python-crontab实现定时任务
    用django-crontab实现定时任务: 1.安装django-crontab 2.安装完成后,将‘django-crontab’添加到settings.py中的INSTALL_APP中, 然后在CRONJOBS中定义自己的定时任务 ...
    99+
    2023-01-31
    python crontab
  • SpringBoot定时任务怎么实现
    这篇文章主要讲解了“SpringBoot定时任务怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot定时任务怎么实现”吧!SpringBoot定时任务主要由两个注解完成...
    99+
    2023-06-05
  • node怎么实现定时任务
    本教程操作环境:linux7.3系统、node18.4.0版、Dell G3电脑。node怎么实现定时任务node定时任务(node-schedule模块)实现一个每天凌晨十二点更新服务器上的git代码的功能koa2框架下的app.js文件...
    99+
    2022-11-22
    定时任务 node
  • Python中threading.Timer()定时器实现定时任务
    目录1、单线程执行2、多线程执行timer最基本理解就是定时器,可以启动多个定时任务,这些定时器任务是异步执行,所以不存在等待顺序执行问题。 Timer方法说明Timer(inter...
    99+
    2023-01-28
    threading.Timer()定时器 threading.Timer()定时任务
  • Python定时任务实现方案
    目录1、定时任务2、Python的定时任务2.1 几种常见的方案2.1.1 schedule2.1.2 Jenkins2.1.3 Celery2.2 题外话之持久化2.2.1 ApS...
    99+
    2022-11-12
  • 使用Python爬虫怎么实现定时计划任务
    这篇文章将为大家详细讲解有关使用Python爬虫怎么实现定时计划任务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.方法一、while True首先最容易的是while true死循环挂起...
    99+
    2023-06-15
  • mysql中怎么实现定时任务
    今天就跟大家聊聊有关mysql中怎么实现定时任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 定时任务 查看event是否开启: show v...
    99+
    2022-10-18
  • php redis怎么实现定时任务
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php redis怎么实现定时任务?php + redis 实现定时任务修改配置文件 redis.conf; notify-keyspace-events "...
    99+
    2022-10-24
  • Swoole中怎么实现定时任务
    这篇文章主要介绍“Swoole中怎么实现定时任务”,在日常操作中,相信很多人在Swoole中怎么实现定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Swoole中怎么实现定时任务”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • Java Spring怎么实现定时任务
    本篇内容主要讲解“Java Spring怎么实现定时任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Spring怎么实现定时任务”吧!java实现定时任务Jdk自...
    99+
    2023-07-02
  • springboot定时任务和异步任务怎么实现
    这篇文章主要介绍“springboot定时任务和异步任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot定时任务和异步任务怎么实现”文章能帮助大家解决问题。异步任务简单案例...
    99+
    2023-06-27
  • SpringBoot怎么使用Schedule实现定时任务
    本文小编为大家详细介绍“SpringBoot怎么使用Schedule实现定时任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么使用Schedule实现定时任务”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-05
  • 怎么使用.NET6+Quartz实现定时任务
    这篇文章主要介绍“怎么使用.NET6+Quartz实现定时任务”,在日常操作中,相信很多人在怎么使用.NET6+Quartz实现定时任务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用.NET6+Qua...
    99+
    2023-07-05
  • Python利用sched模块实现定时任务
    目录牛刀小试进阶使用在固定时间执行任务执行多个任务以不同的优先级执行不同的任务定时任务加上取消方法执行备份程序执行定时分发邮件的程序今天我们来介绍一下Python当中的定时任务,主要...
    99+
    2023-05-14
    Python sched实现定时任务 Python sched定时任务 Python 定时任务 Python sched
  • android定时执行任务怎么实现
    Android定时执行任务可以通过以下几种方式实现:1. 使用Handler和Timer:创建一个Handler对象,在Handle...
    99+
    2023-09-21
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作