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中List的sort方法指南
Sep 01 Python
详细解析Python中的变量的数据类型
May 13 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
提升Python程序性能的7个习惯
Apr 14 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
python写一个随机点名软件的实例
Nov 28 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 Python
windows安装python超详细图文教程
May 21 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
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
js获取当月最后一天实例代码
2013/11/19 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
基于python生成器封装的协程类
2019/03/20 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
护士实习求职信
2014/06/22 职场文书
销售员自我评价
2015/03/11 职场文书
行政申诉状范文
2015/05/20 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android