首页 > 编程语言 >python apscheduler 定时任务的基本使用-5-添加任务

python apscheduler 定时任务的基本使用-5-添加任务

时间:2023-03-24 14:35:12浏览次数:42  
标签:name python job datetime apscheduler 任务 scheduler date now

python apscheduler 定时任务的基本使用-5-添加任务

1、添加定时任务

可以随时随地添加任务,不论调度器是否启动。如果未启动时,添加了定时任务,则会在调度器启动时,正常执行该任务。

添加方式有下面两种

1.1、通过add_job()函数添加

使用 add_job 方法添加任务,会返回一个Job对象,可以用于后续修改或删除任务,这是最普遍的添加任务的方式

例如

def add_job():
    # 使用 add_job 方法添加任务 返回一个Job对象 可以用于后续修改或删除任务
    date = datetime.datetime.now() + datetime.timedelta(seconds=20)  # 可以添加datetime对象作为运行时间
    job = scheduler.add_job(my_job, trigger='date', args=['墨玉麒麟', 18], name="墨玉麒麟JOB", run_date=date,
                            timezone=shanghai)
    print(f'job:{job}')
    scheduler.print_jobs()

1.2、通过装饰器scheduled_job()添加

使用装饰器时,需要先实例化出一个调度器对象,然后调用调度器对象的scheduled_job方法

@scheduler.scheduled_job('date', args=('装饰器参数',), run_date=run_date, name="装饰器", timezone=shanghai)
def my_job2(name):
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log(f"这是由装饰器添加的任务, 名称是:{name}  现在时间:{now}")

说明:

  • scheduler.scheduled_job中的scheduler是创建出的调度器对象

参考代码

import datetime
import threading

from apscheduler.schedulers.blocking import BlockingScheduler


def log(msg):
    t = threading.currentThread()
    name = t.name
    ident = t.ident
    print(f"[{ident}][{name}]{msg}")  # 打印线程号和线程名称


def my_job(name, age):
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log(f"我是{name}, 今年{age}岁, 现在时间:{now}")
    scheduler.print_jobs()


def add_job():
    # 使用 add_job 方法添加任务 返回一个Job对象 可以用于后续修改或删除任务
    date = datetime.datetime.now() + datetime.timedelta(seconds=20)  # 可以添加datetime对象作为运行时间
    job = scheduler.add_job(my_job, trigger='date', args=['墨玉麒麟', 18], name="墨玉麒麟JOB", run_date=date,
                            timezone=shanghai)
    print(f'job:{job}')
    scheduler.print_jobs()


log(f'我是主线程, 现在时间:{datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}')
shanghai = 'Asia/Shanghai'
scheduler = BlockingScheduler()  # 默认存储在内存,执行线程最大10个

run_date = datetime.datetime.now() + datetime.timedelta(seconds=30)


@scheduler.scheduled_job('date', args=('装饰器参数',), run_date=run_date, name="装饰器", timezone=shanghai)
def my_job2(name):
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log(f"这是由装饰器添加的任务, 名称是:{name}  现在时间:{now}")


add_job()

scheduler.print_jobs()

scheduler.start()
# 使用了BlockingScheduler 则无法执行start后面的代码

标签:name,python,job,datetime,apscheduler,任务,scheduler,date,now
From: https://www.cnblogs.com/rainbow-tan/p/17251460.html

相关文章

  • Python学习day2
    ##day3##今日内容1.整型2.布尔类型3.字符串###内容回顾和补充###内容回顾每周写一个思维导图,罗列本周学习的知识点1.运算符补充-in-notin###......
  • 虹科方案 | 使用HK-TrueNAS保护关键任务数据
    HK-TrueNAS为应用程序、虚拟机及其数据的数据保护提供了比基于磁带的备份更好的选择。除了支持OpenZFS自愈文件系统、统一文件和块协议、无中断升级、容量可扩展性、快照......
  • 用Python编写一个封装mstsc的RDP批量管理工具
    要实现的功能1.调用系统的mstsc命令来实现远程桌面2.确保连接过程不可见,实现直接连接的效果3.支持窗口和全屏连接4.支持手动添加新的桌面5.支持显示桌面列表6.......
  • python函数递归例子
    tvs=["少年歌行:",['\t萧瑟:',['\t\t六皇子','\t\t萧楚河'],'\t无心','\t雷无桀']]defislist(sublist):foriinsublist:ifisinstance(i,list):#......
  • python监控linux环境磁盘空间,并通过钉钉通知
    #-*-coding:utf-8-*-importpsutilimporttimefromdingtalkchatbot.chatbotimportDingtalkChatbotfromdatetimeimportdatetimeimportosfromos.pathim......
  • 【PTA|Python】浙大版《Python 程序设计》题目集:第五章
    前言Hello!小伙伴!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算......
  • Python 栈 django框架开源商城系统baykeShop
    起始2022年我用django开发了一个商城的第三方包,起名为:django-happy-shop。当时纯粹是利用业余时间来开发和维护这个包,想法也比较简单,Python语言做web可能用的人比较少,不一......
  • Python psutil包 获取实时内存大小、内存峰值、CPU利用率
    psutil.Process.mem_infopsutil.Process.mem_info函数返回值是一个nametuple对象,其中各字段的内容含义是:参数名称含义rssResidentSetSize,即实际驻留集大小,表示......
  • JS基础 任务管理
    阅读目录任务管理原理分析脚本加载定时器微任务实例操作进度条任务分解任务管理JavaScript语言的一大特点就是单线程,也就是说同一个时间只能处理一个任务。为了协调事件、......
  • [ChatGPT-3.5] How to keep conusming using python rocketmq.client.PushConusmer?
    在使用PythonRocketMQ的PushConsumer进行消息消费时,需要进行以下步骤:创建PushConsumerfromrocketmq.clientimportPushConsumer,ConsumeStatusconsumer=......