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学习笔记之常用函数及说明
May 23 Python
Python计算一个文件里字数的方法
Jun 15 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
python使用建议技巧分享(三)
Aug 18 Python
通过代码实例了解Python异常本质
Sep 16 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
Sea.JS知识总结
2016/05/05 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
Mac 上切换Python多版本
2017/06/17 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python数组并集交集补集代码实例
2020/02/18 Python
pycharm实现猜数游戏
2020/12/07 Python
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
大客户销售经理职责
2013/12/04 职场文书
公司离职证明范本
2014/01/13 职场文书
护理职业生涯规划书
2014/01/24 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
婚礼司仪主持词
2014/03/14 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
python语言中pandas字符串分割str.split()函数
2022/08/05 Python