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 相关文章推荐
Windows下安装python2和python3多版本教程
Mar 30 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 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程序中的常见漏洞进行攻击
2006/10/09 PHP
深入浅析php json 格式控制
2015/12/24 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
为Python程序添加图形化界面的教程
2015/04/29 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
Python Pandas 箱线图的实现
2019/07/23 Python
python tornado修改log输出方式
2019/11/18 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
学习十八大精神心得体会
2013/12/31 职场文书
招聘单位介绍信
2014/01/14 职场文书
小学生作文评语
2014/04/18 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
分公司负责人任命书
2014/06/04 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014年班务工作总结
2014/12/02 职场文书
2015年度党员个人总结
2015/02/14 职场文书
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
Win10 Anaconda安装python-pcl
2022/04/29 Servers