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中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python实现的RSS阅读器实例
Jul 25 Python
python字典DICT类型合并详解
Aug 17 Python
python实现二分查找算法
Sep 21 Python
python正则表达式面试题解答
Apr 28 Python
pip命令无法使用的解决方法
Jun 12 Python
python使用Matplotlib画饼图
Sep 25 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python切图九宫格的实现方法
Oct 10 Python
Flask缓存静态文件的具体方法
Aug 02 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
物业管理应届生求职信
2013/10/28 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
法制宣传口号
2014/06/16 职场文书
药剂专业求职信
2014/06/20 职场文书
学校联谊协议书
2014/09/16 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书