前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python定时计划任务探究,如何实现到点运行py任务脚本

Python定时计划任务探究,如何实现到点运行py任务脚本

作者头像
二爷
发布2021-10-11 17:04:00
1.9K0
发布2021-10-11 17:04:00
举报
文章被收录于专栏:二爷记二爷记

不少大佬哥应该有着这样一个应用场景,即到点跪舔女神,给女大佬问好,带早餐,备胎计划??而在实际网络中,也有着不少定时定点计划任务需要运行,这在运维当中非常常见,也非常重要!身为技术渣想要实现到点运行py任务脚本,比如说每天某个时间点准时运行爬取91新片以及精彩评论,兴趣让渣渣有研究的动力,这就有了下面这篇水文!!

方法一:宝塔面板计划任务

如果你的服务器恰好装有宝塔面板,那么,你不妨试试宝塔的计划任务!

选择shell脚本,设置好相关参数

输入命令 python /www/wwwroot/py91.py

注意:脚本内容 python /www/wwwroot/域名/文件绝对路径

其实就是跟windows调用cmd命令一样哈!

到点即可运行py文件!

这简直就是LSP们的最爱设置了,有没有??!!

方法二:python代码实现

  • 方式一:while循环+sleep

超级简单粗暴的方式,即 while True + time.sleep(s),s即为间隔方式!

参考demo:

代码语言:javascript
复制
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)

优点:当然是简单方便,连本渣渣都会!

缺点:大佬说是耗服务器性能,想想也是,其实是一直在阻塞运行,至于多耗性能就不得而知了!

  • 方式二:threading模块中的Timer

这个本渣渣没有用过,大佬哥们可以尝试看看!

参考demo:

代码语言:javascript
复制
from datetime import datetime
from threading import Timer
# 打印时间函数
def printTime(inc):
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    t = Timer(inc, printTime, (inc,))
    t.start()
# 5s
printTime(5)
  • 方式三:使用sched模块

模块是 Python 内置的模块,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。

本渣渣现在瞎几把用的方法,其实源码没怎么研究,改着用着先了。。

参考demo:

代码语言:javascript
复制
import sched
import time
from datetime import datetime
# 初始化sched模块的 scheduler 类
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
schedule = sched.scheduler(time.time, time.sleep)
# 被周期性调度触发的函数
def printTime(inc):
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    schedule.enter(inc, 0, printTime, (inc,))
# 默认参数60s
def main(inc=60):
    # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,
    # 给该触发函数的参数(tuple形式)
    schedule.enter(0, 0, printTime, (inc,))
    schedule.run()
# 10s 输出一次
main(10)

运行效果,改为5s运行一次!

关于其挂机服务器占用性能,仅供参考,毕竟只是一个小小的爬取脚本!

附:高端,框架方法,本渣渣头秃了,大佬哥们自行尝试研究吧!

定时任务框架APScheduler

参考来源:

Python 实现定时任务

https://www.cnblogs.com/yblackd/p/13359769.html

·················END·················

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与SEO学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一:宝塔面板计划任务
  • 方法二:python代码实现
    • 定时任务框架APScheduler
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档