如何让你的Python程序,定时定点地去执行任务?

③ 项目源码(四五十个有趣且可靠的练手项目及源码)

④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

Python学习交流Q群101677771

类型

解释

DateTrigger

到期执行(到xxxx年x月x日 x时x分x秒执行) 对应DateTrigger

IntervalTrigger

间隔执行(每5秒执行一次)

CronTrigger

一个crontab类型的条件(这个比较复杂,比如周一到周四的4-5点每5秒执行一次)

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

Jobstore在scheduler中初始化,另外也可通过scheduler的add_jobstore动态添加Jobstore。每个jobstore

都会绑定一个alias,scheduler在Add Job时,根据指定的jobstore在scheduler中找到相应的jobstore,并

将job添加到jobstore中。

Jobstore主要是通过pickle库的loads和dumps【实现核心是通过python的__getstate__和__setstate__重写

实现】,每次变更时将Job动态保存到存储中,使用时再动态的加载出来,作为存储的可以是redis,也可以

是数据库【通过sqlarchemy这个库集成多种数据库】,也可以是mongodb等

目前APScheduler支持的Jobstore:

MemoryJobStore

MongoDBJobStore

RedisJobStore

RethinkDBJobStore

SQLAlchemyJobStore

ZooKeeperJobStore

执行器(executor)处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。

  • 说人话就是添加任务时候用它来包装的,executor的种类会根据不同的调度来选择,如果选择AsyncIO作为调度的库,那么选择AsyncIOExecutor,如果选择tornado作为调度的库,选择TornadoExecutor,如果选择启动进程作为调度,选择ThreadPoolExecutor或者ProcessPoolExecutor都可以Executor的选择需要根据实际的scheduler来选择不同的执行器

目前APScheduler支持的Executor:

AsyncIOExecutor

GeventExecutor

ThreadPoolExecutor

ProcessPoolExecutor

TornadoExecutor

TwistedExecutor

调度器(scheduler)是其他的组成部分。你通常在应用只有一个调度器,应用的开发者通常不会直接处理作业存储、调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业.

Scheduler是APScheduler的核心,所有相关组件通过其定义。scheduler启动之后,将开始按照配置的任务进行调度。

除了依据所有定义Job的trigger生成的将要调度时间唤醒调度之外。当发生Job信息变更时也会触发调度。

scheduler可根据自身的需求选择不同的组件,如果是使用AsyncIO则选择AsyncIOScheduler,使用tornado则

选择TornadoScheduler。

目前APScheduler支持的Scheduler:

AsyncIOScheduler

BackgroundScheduler

BlockingScheduler

GeventScheduler

QtScheduler

TornadoScheduler

TwistedScheduler

简单应用

====

import time

from apscheduler.schedulers.blocking import BlockingScheduler # 引入后台

def my_job():

print time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))

sched = BlockingScheduler()

sched.add_job(my_job, ‘interval’, seconds=5)

sched.start()

完整代码

====

trigeers 触发器

job stores job 存储

executors 执行器

schedulers 调度器

from pytz import utc

from sqlalchemy import func

from apscheduler.schedulers.background import BackgroundScheduler,AsyncIOScheduler

from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore

from apscheduler.executors.pool import ProcessPoolExecutor

jobstores = {

可以配置多个存储

#‘mongo’: {‘type’: ‘mongodb’},

‘default’: SQLAlchemyJobStore(url=‘sqlite:///jobs.sqlite’) # SQLAlchemyJobStore指定存储链接

}

executors = {

‘default’: {‘type’: ‘threadpool’, ‘max_workers’: 20}, # 最大工作线程数20

‘processpool’: ProcessPoolExecutor(max_workers=5) # 最大工作进程数为5

}

job_defaults = {

‘coalesce’: False, # 关闭新job的合并,当job延误或者异常原因未执行时

‘max_instances’: 3 # 并发运行新job默认最大实例多少

}

scheduler = BackgroundScheduler()

… do something else here, maybe add jobs etc.

scheduler.configure(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc) # utc作为调度程序的时区

import os

import time

def print_time(name):

print(f’{name} - {time.ctime()}')

def add_job(job_id, func, args, seconds):

“”“添加job”“”

print(f"添加间隔执行任务job - {job_id}")

scheduler.add_job(id=job_id, func=func, args=args, trigger=‘interval’, seconds=seconds)

def add_coun_job(job_id, func, args, start_time):

“”“添加job”“”

print(f"添加一次执行任务job - {job_id}")

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一款定时/循环执行任务的绿色小软件,可以用来定时执行程序、DOS命令、从HTTP服务器下载程序运行、结束进程、 模拟按键、发送EMAIL、网络唤醒、消息提示、关机、重启、注销、锁定、待机等操作,都是本人曾经所需要的功能!   合理使用和搭配软件的各功能,可做更多事情!可供对系统较了解的人自由发挥。 提示: a. 显示主窗口热键Ctrl+F1(可在设置里自定义) b. OnTimer.exe /h 启动隐藏,但不隐藏托盘图标除非使用OnTimer.exe /h-all c. 如果想更改消息提示背景只要找张238x139(其他尺寸软件会缩放)的图片替换OnTimer.jpg d. 普通运行、参数运行、 执行DOS “备注”开头为“-h”则隐藏执行 e. 关机、重启、注销、锁定、待机 “内容”开头为数字则执行前倒计时(可选择取消) 1.普通运行:  可以打开程序,目录,网站,文件,和Windows运行一样,只是不能带参数 如: [内容]http://www.yryz.net [内容]d:\mp3\爱上你是个错.mp3(可实现音乐闹钟) 2.参数运行: 可以带参数运行程序 如: [内容]shutdown -s [内容]ping www.baidu.com 3.下载运行:你可以从网上下载文件并执行 如: [内容]http://www.yryz.net/soft/OnTimer.rar [内容]http://dl_dir.qq.com/qqfile/qq/QQ2009/qq2009sp6_installer.exe 4.结束进程: 以最高权限结束进程,可以结束系统进程(winlogon.exe)! 如: [内容]QQ.exe 5.执行DOS: 就是CMD啦(dir del ...) [内容]del c:\*.log /q /s 6.模拟按键: 用来发送按键(附录有相关按键说明) 如: [内容]^%z 相当于按了Ctrl+Alt+z ,QQ出来了吧!…… 7.发送邮件: 用来定时发送Email的,当然你要先设置好SMTP,也就是用来发信的账号,然后就可以添加任务了, [内容]邮件内容 [参数]收信地址 注意: 如果你只是想发送文字,就直接在[内容]中输入,如: 生日快乐! 如果是想发送文本文件,那就在[内容]中输入文件路径如:c:\boot.ini 程序执行此操作时,会先内容是否为存在的文件,否则就把内容当作文字发送! 8.网络唤醒:  用来远程开机,[内容]中输入MAC地址如:00-e0-4d-df-7e-8a 9.消息提示:  用来定时提醒的,在屏幕的右下角以动画形式显示. 10.关闭系统 11.重启系统 12.注销登陆 13.锁定系统 14.系统待机 例: ------------------------ 先: 执行DOS: ipconfig /all >c:\ip.txt 再: 发送邮件: c:\ip.txt 可用于获得ADSL的动态IP,知道的人应该了解用处! ---------------------------------- 20110330 v1.3d - 修复在Windows 7下按“Alt”键按钮消失的BUG - 修复权限问题导致“随系统启动”无效 20101205 v1.3c + 关机等任务支持倒计时,以便取消执行 * 优化列表显示效果 20101128 v1.3b + 普通运行、参数运行、 执行DOS 支持隐藏执行 + 双击任务即可编辑 - 修复“移动”->“尾部”报错 - 修复分类切换时,任务状态显示不正确 * 调整执行次数显示 20101125 v1.3a + 支持任务分类管理(可拖动) + 支持“每月”任务 + 支持任务排序(上下移动任务,可拖动) + 支持任务执行次数存储 + 支持“内容”、“参数/备注”搜索 + 支持临时暂停所有任务 * 一些细节改进和BUG修复 ! 因数据库结构有变动,要使用原来的数据库(OnTimer.db),可执行 OnTimer.exe /update,当然出现异常时软件也会提示你修复. 20101020 v1.2h - 修复软件中文目录支持问题(数据库读取异常) - 修复托盘图标重建问题 + 添加任务状态托盘提示(活动任务/总任务) * 调整显示字体和列表排序 20101018 v1.2g + 加入“系统待机”功能 + 设置中加入“随系统启动”选项 + 任务列表支持点击“表头”进行排序 + 支持给任务添加备注 * 优化一些小细节 - 修复Win7下添加任务时提示“时间格式有误”的BUG 20100903 v1.2f * 优化消息提示框,使其提示消息时不影响你的工作 * 调整了任务类型的顺序,可能会导致旧版任务类型不正常,更新时请注意 * 调整任务列表顺序,把新添加的任务放到最前面 20100623 v1.2e * 改进列表选择框 * 窗口焦点设置(热键唤醒时) - 去掉提示消息窗口自动关闭 + 可自定义热键 ! 因数据库结构有变动,使用 OnTime.exe /12d-12e 启动就可把旧版的数据库转换成v1.2e版 20100511 v1.2d % 解决多任务时列表闪烁问题。 % 修复计时部分一些Bug!(星期) 20100510 v1.2c + 加入按星期执行!并优化计时部分。 20100510 v1.2b * 重写,效果更好,并作大量优化!  + 使用加密SQLite存储数据。 2008 v1.2  边学边做自己用。 按键附录: Shift + Ctrl ^ Alt % Enter ~ 以下按键要用{}括起来: BKSP, BS, BACKSPACE BREAK CAPSLOCK CLEAR DEL DELETE DOWN END ENTER ESC ESCAPE F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 HELP HOME INS LEFT NUMLOCK PGDN PGUP PRTSC RIGHT SCROLLLOCK TAB UP WIN ( ) ~ % ^ + 可参考下例重复发送某按键: {DEL 4} ;连续4次按下 DEL 键 {S 30} ;发送30个字符“S” +{TAB 4} ;连续4次按下 SHIFT+TAB -------------------------------------------------------- SendMail.log是的日志代码,可参考下表 邮件服务返回代码含义 500 格式错误,命令不可识别(此错误也包括命令行过长) 501 参数格式错误 502 命令不可实现 503 错误的命令序列 504 命令参数不可实现 211 系统状态或系统帮助响应 214 帮助信息 220 服务就绪 221 服务关闭传输信道 421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应) 250 要求的邮件操作完成 251 用户非本地,将转发向 450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙) 550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问) 451 放弃要求的操作;处理过程中出错 551 用户非本地,请尝试 452 系统存储不足,要求的操作未执行 552 过量的存储分配,要求的操作未执行 553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误) 354 开始邮件输入,以.结束 554 操作失败 535 用户验证失败 235 用户验证成功 334 等待用户输入验证信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值