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中itertools模块用法详解
Sep 25 Python
浅谈Python数据类型之间的转换
Jun 08 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
python format 格式化输出方法
Jul 16 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
基于python生成器封装的协程类
Mar 20 Python
python里运用私有属性和方法总结
Jul 08 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
在python中的socket模块使用代理实例
2014/05/29 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python extract及contains方法代码实例
2020/09/11 Python
惠普香港官方商店:HP香港
2019/04/30 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
同志主要表现材料
2014/08/21 职场文书
出售房屋委托书范本
2014/09/24 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
认真学习保证书
2015/02/26 职场文书
员工开除通知书
2015/04/25 职场文书
回复函格式及范文
2015/07/14 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
python源码剖析之PyObject详解
2021/05/18 Python