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创建临时文件夹的方法
Jul 06 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
python 获取url中的参数列表实例
Dec 18 Python
python中必要的名词解释
Nov 20 Python
Django分组聚合查询实例分享
Apr 29 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
如何基于python把文字图片写入word文档
Jul 31 Python
Scrapy实现模拟登录的示例代码
Feb 21 Python
Python first-order-model实现让照片动起来
Jun 25 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Python中的默认参数详解
2015/06/24 Python
python 产生token及token验证的方法
2018/12/26 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
应届生煤化工求职信
2013/10/21 职场文书
高级编程求职信模板
2014/02/16 职场文书
实习公司领导推荐函
2014/05/21 职场文书
普通党员对照检查材料
2014/09/24 职场文书
实习生个人总结范文
2015/02/28 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
高三数学教学反思
2016/02/18 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
Python如何使用循环结构和分支结构
2022/04/13 Python