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 网络爬虫初级实现代码
Feb 27 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
pandas DataFrame运算的实现
Jun 14 Python
详解python对象之间的交互
Sep 29 Python
python源码剖析之PyObject详解
May 18 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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
php数组总结篇(一)
2008/09/30 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
js 单引号 传递方法
2009/06/22 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python类共享变量操作
2020/09/03 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
高中运动会入场词
2014/02/14 职场文书
学生打架检讨书
2014/02/14 职场文书
五四青年节演讲稿
2014/05/26 职场文书
社区科普工作方案
2014/06/03 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
网吧员工管理制度
2015/08/05 职场文书
中秋节祝酒词
2015/08/12 职场文书
化工生产实习心得体会
2016/01/22 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python