Python定时任务随机时间执行的实现方法


Posted in Python onAugust 14, 2019

背景:

有一个爬虫服务,需要定时从公开网站上拉取一些数据,为了避免被识别为爬虫(防爬虫的识别需要根据很多特征,时间仅仅是其中一个维度),需要在指定的时间内,随机生成一个时间爬取

脚本是python写的,直接上代码...

import logging
import traceback
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def spider_schedule():
  # spider_schedule是job_id
  scheduler.remove_job('spider_schedule')
  try:
    print 'spider start... ', datetime.now().strftime('%Y-%m-%d %X')
    #--------自己的业务代码-------
    pass
    #---------------------------
    print 'spider end... ', datetime.now().strftime('%Y-%m-%d %X')
  except Exception as e:
    print traceback.format_exc(e)
  finally:
    interval_minutes = random.randint(60, 120) # 1-120分钟随机选一个时间
    interval_seconds = random.randint(1, 60) # 1~60秒随机选一个时间
    scheduler.add_job(spider_schedule, 'interval', minutes=interval_minutes, seconds=interval_seconds, id='spider_schedule')
if __name__ == '__main__':
  scheduler.add_job(spider_schedule, 'interval', seconds=10, id='spider_schedule')
  scheduler.start()

ps:下面看下python定时执行任务的三种方式

#!/user/bin/env python
# @Time   :2018/6/7 16:31
# @Author  :PGIDYSQ
#@File   :PerformTaskTimer.py
#定时执行任务命令
#1.定时任务代码
import time,os,sched
# schedule = sched.scheduler(time.time,time.sleep)
# def perform_command(cmd,inc):
#   os.system(cmd)
#   print('task')
# def timming_exe(cmd,inc=60):
#   schedule.enter(inc,0,perform_command,(cmd,inc))
#   schedule.run()
# print('show time after 2 seconds:')
# timming_exe('echo %time%',2)
#2.周期性执行任务
schedule = sched.scheduler(time.time,time.sleep)
def perform_command(cmd,inc):
  #在inc秒后再次运行自己,即周期运行
  schedule.enter(inc, 0, perform_command, (cmd, inc))
  os.system(cmd)
def timming_exe(cmd,inc=60):
  schedule.enter(inc,0,perform_command,(cmd,inc))
  schedule.run()#持续运行,直到计划时间队列变成空为止
print('show time after 2 seconds:')
timming_exe('echo %time%',2)
#3.循环执行命令
# import time,os
# def re_exe(cmd,inc = 60):
#   while True:
#     os.system(cmd)
#     time.sleep(inc)
# re_exe("echo %time%",5)
Python 相关文章推荐
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
速记Python布尔值
Nov 09 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
Python实现八皇后问题示例代码
Dec 09 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
python [:3] 实现提取数组中的数
Nov 27 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 Python
查看Python依赖包及其版本号信息的方法
Aug 13 #Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 #Python
Python编写带选项的命令行程序方法
Aug 13 #Python
使用python模拟命令行终端的示例
Aug 13 #Python
在macOS上搭建python环境的实现方法
Aug 13 #Python
解决Mac下使用python的坑
Aug 13 #Python
python 接口实现 供第三方调用的例子
Aug 13 #Python
You might like
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
javascript中Object使用详解
2015/01/26 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python 实现矩阵填充0的例子
2019/11/29 Python
python与mysql数据库交互的实现
2020/01/06 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
前台接待的工作职责
2013/11/21 职场文书
转党组织关系介绍信
2014/01/08 职场文书
八年级数学教学反思
2014/01/31 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
离婚案件上诉状
2015/05/23 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python
Redis 异步机制
2022/05/15 Redis