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程序与服务器连接的WSGI接口
Apr 29 Python
python简单获取本机计算机名和IP地址的方法
Jun 03 Python
Python使用turtule画五角星的方法
Jul 09 Python
Python程序中的观察者模式结构编写示例
May 27 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
python 字符串常用函数详解
Sep 11 Python
ubuntu上安装python的实例方法
Sep 30 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
用Flash图形化数据(一)
2006/10/09 PHP
组合算法的PHP解答方法
2012/02/04 PHP
php 文本文件的读取效率
2012/02/10 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
JS中递归函数
2016/06/17 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
浅谈django channels 路由误导
2020/05/28 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
党员公开承诺书和承诺事项
2014/03/25 职场文书
指导老师鉴定意见
2015/06/05 职场文书
2016新年晚会开场白
2015/12/03 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
php双向队列实例讲解
2021/11/17 PHP
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技