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对象转JSON字符串的方法
Apr 27 Python
python 异常处理总结
Oct 18 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
了解不常见但是实用的Python技巧
May 23 Python
python多线程分块读取文件
Aug 29 Python
python数据化运营的重要意义
Nov 25 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
如何解决python多种版本冲突问题
Oct 13 Python
Anaconda的安装与虚拟环境建立
Nov 18 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分页集合包括使用方法
2013/10/21 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
python实现简单学生信息管理系统
2020/04/09 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
学习委员自我鉴定
2014/01/13 职场文书
建筑工地质量标语
2014/06/12 职场文书
公司委托书格式范本
2014/09/16 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis