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处理html转义字符的方法详解
Jul 01 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
浅谈Python爬虫基本套路
Mar 25 Python
Scrapy-Redis结合POST请求获取数据的方法示例
May 07 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python操作gitlab API过程解析
Dec 27 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
解决python使用list()时总是报错的问题
May 05 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
Python字典实现伪切片功能
Oct 28 Python
浅析Python实现DFA算法
Jun 26 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
留言板翻页的实现详解
2006/10/09 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
p5.js绘制创意自画像
2019/11/04 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
Python探索之ModelForm代码详解
2017/10/26 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Django celery异步任务实现代码示例
2020/11/26 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
Delphi笔试题
2016/11/14 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
公司接待方案
2014/03/08 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技