定时任务python

Python使用apscheduler模块设置定时任务的实现 本文主要介绍了Python使用apscheduler模块设置定时任务的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 阅读详情

APScheduler提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。
APScheduler提供了多种不同的调度器,方便开发者根据自己的实际需要进行使用;同时也提供了不同的存储机制,可以方便与Redis,数据库等第三方的外部持久化机制进行协同工作,总之功能非常强大和易用。

APScheduler的主要的调度类
在APScheduler中有以下几个非常重要的概念,需要大家理解:

触发器(trigger)
包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行,根据trigger中定义的时间点,频率,时间区间等等参数设置。除了他们自己初始配置以外,触发器完全是无状态的。

作业存储(job store)
存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中。一个作业的数据讲在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储。job store支持主流的存储机制:redis, mongodb, 关系型数据库, 内存等等

执行器(executor)
处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。基于池化的操作,可以针对不同类型的作业任务,更为高效地使用cpu的计算资源。

调度器(scheduler)
通常在应用只有一个调度器,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业。

这里简单列一下常用的若干调度器:

    BlockingScheduler:仅可用在当前你的进程之内,与当前的进行共享计算资源
    BackgroundScheduler: 在后台运行调度,不影响当前的系统计算运行
    AsyncIOScheduler: 如果当前系统中使用了async module,则需要使用异步的调度器
    GeventScheduler: 如果使用了gevent,则需要使用该调度
    TornadoScheduler: 如果使用了Tornado, 则使用当前的调度器
    TwistedScheduler:Twister应用的调度器
    QtScheduler: Qt的调度器
 

import time
import datetime
def job_function(id,iid,uid,user_id,repay_time,month):
    # 当前时间+预期时间  是否大于数据库时间

    times = time.mktime(time.strptime(month, "%Y-%m-%d"))
    if times-time.time() !=0:
        months = get_Month(datetime.datetime.strptime(month, '%Y-%m-%d'),'-',1)
        monthss = time.mktime(time.strptime(months, "%Y-%m-%d"))
        if time.time() == monthss:
            # months =
            # 根据发标id  去投资表中进行查找type 为0 未投资的人数
            sql = "select * from investment_order where capital_id=%d and type=0"%(int(id))
            res = db.find(sql)
            # 算出 投资金额+利率
            nums = float(res['money']) * float(res['interest'])
            # 自动扣除发标用户金额
            sql1 = "select money,actual_money from user where id=%d"%(int(user_id))
            res1 = db.find(sql1)
            money = float(res1['money']) - float(nums)
            # 更改发标用户中金额
            sql4 = "update user set money=%.2f,actual_money=%.2f where id=%d"%(float(money),float(money),int(user_id))

                # 自动增加投标用户金额
            sql2 = "select money,actual_money from user where id=%d" % (int(uid))
            res2 = db.find(sql2)
            money = float(res2['money']) + float(nums)
            # 更改发标用户中金额
            sql3 = "update user set money=%.2f,actual_money=%.2f where id=%d" % (float(money), float(money), int(uid))
            # 根据投标表id 去查询投资记录表中记录的capital_id查询 type状态是否为1已还款 ,
            # try:
            # 更改完用 则更改投标状态为1
            sql5 = "update investment_order set type=1 where capital_id=%d and user_id=%d and id=%d" % (
            int(id), int(uid), int(iid))
            db.add(sql4)
            db.add(sql3)
            db.add(sql5)
            # 如果记录都为1,将投资表中状态改为8已完成
            sql6 = "select count(type) as type from investment_order where capital_id=%d and user_id=%d and type=0" % (
            int(iid), int(uid))
            res6 = db.findall(sql6)
            for i in res6:
                if i['type'] == 0:
                    # 修改投资表中状态为8
                    sql7 = "update capital set status=8 where id=%d" % (int(id))
                    db.add(sql7)
                else:
                    break
            db.commit()
            return jsonify({'code': 200, 'msg': '还款成功'})
            # except :
            #     db.rollback()
            #     return jsonify({'code': 403, 'msg': '还款失败'})
        else:
            pass
    else:
        pass

from apscheduler.schedulers.background import BackgroundScheduler
def test1():
    sched = BackgroundScheduler()
    # 查询为还款的信息
    sql = "select c.id,c.starttime,c.repay_time,c.user_id,i.user_id as uid,i.id as iid from capital as c inner join investment_order as i on c.id=i.capital_id where c.status=7"
    res = db.findall(sql)
    if res:

        # 添加调度任务

        for i in res:
            month = get_Month(i['starttime'], '+', i['repay_time'])
            # 调度方法为 timedTask,触发器选择 interval(间隔性),间隔时长为 2 秒
            # sched.add_job(job_function, 'interval', seconds=2, args=[i['id'],i['iid'],i['uid'],i['user_id'],i['repay_time'],month])
            # sched.add_job(job_function, 'cron',month=int(i['repay_time'])-1, hour=0, minute=30,args=[i['id'],j['iid'],j['uid'],i['user_id'],month])
            # 每天00:30执行
            sched.add_job(job_function, 'cron', day_of_week='*', hour=0, minute=30,args=[i['id'],i['iid'],i['uid'],i['user_id'],i['repay_time'],month])
        # 启动调度任务
        sched.start()
        return 'ok'
    else:
        pass

python定时任务 在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。今天,我跟大家分享下 Python 定时任务的实现方法。 阅读详情

相关推荐

Python定时任务实现的四种方案

昨晚凌晨两点,小编接到女神的电话,心里正心猿意马,没想到电话中的女神竟带着哭腔和我说老板让她现在就去公司加班,我很好奇的问她什么事情要这么晚去?女神委屈的说:“因为我们公司这个产品是针对美国用户,存在时差”说完又哭了起来。唉,小编心想终于有机会在女神面前露一手了,听我慢慢道来。 在开发一个自动化测试平台,其中有一个功能是必不可少的,那就是定时任务调度。比如现在你的项目需要凌晨2点跑测试,你一个女孩子不可能真的2点钟起床跑到公司去执行测试吧,这时候定时任务就显得尤为重要,可以说是作为一个测试平台的标配了 用

jspython的博客 1953

python中BackgroundScheduler和BlockingScheduler的区别

这篇文章主要介绍了python中BackgroundScheduler和BlockingScheduler的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 目录 1、基本的定时调度 2、BlockingScheduler与BackgroundScheduler区别 APScheduler最基本的用法: “定时几秒后启动job” 两种调度器: BackgroundScheduler和BlockingScheduler的区别, j

KKAZIQA的博客 6373

【python】Python中实现定时任务常见的几种方式原理分析与应用实战

在Python中,实现定时任务是一个常见的需求,无论是在自动化脚本、数据处理、系统监控还是其他许多应用场景中。Python提供了多种方法来实现定时任务,包括使用标准库、第三方库以及系统级别的工具。本文将详细介绍几种常见的Python定时任务实现方式,并结合实际案例进行说明。

景天科技苑 1925

BackgroundScheduler使用

定时调度

nmxy_mmc的博客 2247

UE4-(蓝图)第五十五课图片九宫格拉伸的使用

一、为什么使用九宫格拉伸 在UI布局的时候,有时候使用的图片与我们要制作的UI大小有差距,如果图片是普通方式直接拉伸很可能造成图片四个角上的效果与原图片差距太大甚至是变形,这时候使用九宫格模式拉伸,可以保持图片四个角上的样式不发生改变,只对中间区域拉伸。 原始 正常拉伸: 九宫格拉伸: 二、图片参数设置 1.新建一个UI 控件蓝图,在CanvasPanel下拖入一个Image,选择一张...

Stone的博客 7890

gcc/g++ 链接库的编译与链接

gcc/g++ 链接库的编译与链接 surgewong@gmail.com http://blog.youkuaiyun.com/surgewong       程序编译一般需要经预处理、编译、汇编和链接几个步骤。在实际应用中,有些公共代码需要反复使用,就把这些代码编译成为“库”文件。在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态(链接)库,其特点是可

Surge 4万+

APScheduler-BackgroundScheduler

是(Advanced Python Scheduler)库中的一个调度器,它允许你在后台运行定时任务。使用可以方便地在应用程序中添加和管理定时任务,而不会阻塞主线程的运行。

qq_43251445的博客 1487

嵌入式开源项目哪里找

对比产生的伤害是经验思考积累下的差距,知道自己不知道什么然后前进去追寻。

quanquanxiaobu的博客 3955

python实现定时任务的8种方式详解

python实现定时任务的8种方式详解

IT之一小佬的博客 4万+

c++ mysql_init 返回无效指针_C++操作MYSQL遇到的一些问题

首先 我使用的是 vcpkg上面是我装的一些库《大大安利vcpkg 安装时一定要使用powershell进行编译装上vcpkg后装ligmariadb这个库,这个对Mysql操作还是挺方便的,然后说一下 在装库时碰到的一些问题1.网络问题1.参考了一下 github上的答案 将下载失败的url拷下来 自己下 然后再重新开始安装《vcpkg在安装时每一个需要下载的 都会提供url-仔细找,2.这个问...

weixin_32176627的博客 681

让 ABAP 开发更聪明的搭档:SAP Joule for Developers 与 ABAP AI Capabilities 全面实战

摘要:SAP已将生成式AI集成到ABAP开发工具中,推出Joule for Developers功能。该功能直接嵌入Eclipse开发环境,提供代码解释、生成、测试构造和遗留代码迁移等辅助功能。Joule支持ABAP Cloud项目开发,能围绕当前开发对象提供上下文相关的建议,帮助开发者高效完成应用开发与迁移任务。启用该功能需升级ADT并获取相应许可,典型应用场景包括RAP应用构建和S/4HANA迁移中的代码重构。官方资源提供了多个实践案例,帮助开发者快速上手这一AI辅助开发功能。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 497

[283]python定时任务

的全称是。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。

周小董 4万+

第9章:Embedding、Pooling 与检索增强基础

本文介绍了律师事务所如何利用vLLM构建法律文档RAG系统,解决传统关键词检索在语义匹配上的不足。主要内容包括: 项目背景:传统Elasticsearch检索在法律术语上的低准确率问题,及多模型维护的复杂性; 技术方案:采用vLLM统一支持生成和向量化能力,通过语义向量检索提升相关性; 关键实现: 用vLLM的Embedding端点处理文档向量化 构建包含离线索引和在线检索的完整RAG流程 采用余弦相似度进行语义匹配 实践建议:切片大小选择、向量归一化处理、不同场景下的数据库选型等。

davidwang456的专栏 60

python实现定时任务的各种方法

python实现定时任务各种方法

y2016724的博客 3572

【YOLOv8改进[Conv]】使用OREPA助力V8更优秀

使用OREPA助力V8更优秀,降低训练成本,在不引入任何推理时间成本的情况下提高深度模型的性能。

静谧、淡雅 1918

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

505

Python定时任务

Python下实现定时任务的方式有很多种方式。 循环sleep: 这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。 def timer(n): ''' 每n秒执行一次 ''' while True: print time.strftime('%Y-%m

whiterbear的专栏 4万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python定时任务_Python实现定时任务

Python下实现定时任务的方式有很多种方式。下面介绍几种循环sleep:这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。def timer(n):'''''每n秒执行一次'''while True:print time.strftime('%Y-%m-%d %X',time.localtime())yourTask()...

weixin_39559559的博客 141

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python 实现定时任务

循环 sleep 最简单方式,在循环里面放入要执行的任务,sleep等待时间后再执行 from datetime import datetime import time # 每n秒执行一次 def timer(n): while True: print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) time.sleep(n) # 5s timer(5) 缺点:只能执行固定间隔时间的任务,如果有定时任务就无法完成,比

u013302168的博客 4937

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

python定时任务介绍

定时任务 本文介绍几种简单的执行定时任务的方法,包含两种可以重复运行定时任务的方法以及两种只能定时运行一次任务的方法 死循环 + time.sleep() (定时多次运行) 第一种办法简单粗暴。那就是在一个死循环中,使用线程睡眠函数 sleep()。 import time def dosomething(s): print(s) def timedTask(): while ...

wallace_www的博客 1730

如何在Python中设置定时任务

无论是使用schedule还是time库,Python都提供了多种设置定时任务的方法。选择哪个库取决于您的具体需求和偏好。如果您需要一个轻量级的库来快速设置简单的定时任务,那么schedule库是一个不错的选择。如果您需要一个更为强大的库来管理复杂的定时任务,那么库是一个更好的选择。而如果您只需要一个Python内置的库来完成简单的定时任务,那么time库是一个不错的选择。希望这篇文章对您有所帮助!如果您想要了解更多关于Python的知识,请查看我们的其他文章和教程!

挨踢二天才 2620

python 定时任务 web管理_python定时任务

APScheduler简介在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第一时间想到的是利用time模块的time.sleep()方法使程序休眠来达到定时任务的目的,虽然这样也可以,但是总觉得不是那么的专业,^_^所以就找到了python的定时任务模块APScheduler:...

weixin_34118910的博客 1500

python定时任务_Python定时任务

在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。今天,我跟大家分享下 Python 定时任务的实现方法。1、第一种办法是最简单又最暴力。那就是在一个死循环中,使用线程睡眠函数 sleep()。from datetime import datetimeimport t...

weixin_39621178的博客 252

python通过cron设置定时任务

每个jobstore都会绑定一个alias,scheduler在Add Job时,根据指定的jobstore在scheduler中找到相应的jobstore,并将job添加到jobstore中。Executor的种类会根据不同的调度来选择,如果选择AsyncIO作为调度的库,那么选择AsyncIOExecutor,如果选择tornado作为调度的库,选择TornadoExecutor,如果选择启动进程作为调度,选择ThreadPoolExecutor或者ProcessPoolExecutor都可以。

m0_71555731的博客 2974

详解Python执行定时任务

更多Python学习内容:ipengtao.com在软件开发和系统管理中,经常需要执行定时任务来完成自动化操作。Python作为一种功能强大且灵活的编程语言,提供了多种方式来执行定时任务。本文将详细介绍Python中执行定时任务的方法、特性、基本功能、高级功能、实际应用场景,并进行总结,帮助大家全面了解和应用Python的定时任务功能。特性简单易用:Python提供了多种库和工具来执行定时任务,使...

GitHub_miao的博客 865
上一篇: 无限极分类
下一篇: mysql索引相关面试题
焦长豪的技术博客
博客等级 码龄5年 13粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值