Python定时任务随机时间执行的实现方法

背景:

有一个爬虫服务,需要定时从公开网站上拉取一些数据,为了避免被识别为爬虫(防爬虫的识别需要根据很多特征,时间仅仅是其中一个维度),需要在指定的时间内,随机生成一个时间爬取

脚本是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)
(0)

相关推荐

  • Python中定时任务框架APScheduler的快速入门指南

    前言 大家应该都知道在编程语言中,定时任务是常用的一种调度形式,在Python中也涌现了非常多的调度模块,本文将简要介绍APScheduler的基本使用方法. 一.APScheduler介绍 APScheduler是基于Quartz的一个python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务. APScheduler提供了多种不同的调度器,方便开发者根据自己的实际需要进行使用:同时也提供了不同的存储机

  • 详解使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用程序部署时等.有需求当然就得想办法解决,不然在程序猿界混(一群自得其乐的猿). 下面进入正题,开始想通过以写文件的形式设置,通过在配置文件中直接追加一行即可.但是读写文件难免有点繁琐,再比如:设置任务时要检查任务是否已经存在:根据输入参数设置相应的任务等.以读写文件难免不太合适.所以想到了"万能&q

  • Python实现定时任务

    Python下实现定时任务的方式有很多种方式.下面介绍几种 循环sleep: 这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行.缺点是,不容易控制,而且sleep是个阻塞函数. def timer(n): ''''' 每n秒执行一次 ''' while True: print time.strftime('%Y-%m-%d %X',time.localtime()) yourTask() # 此处为要执行的任务 time.sleep(n) threading的Time

  • python Celery定时任务的示例

    本文介绍了python Celery定时任务的示例,分享给大家,具体如下: 配置 启用Celery的定时任务需要设置CELERYBEAT_SCHEDULE . Celery的定时任务都由celery beat来进行调度.celery beat默认按照settings.py之中的时区时间来调度定时任务. 创建定时任务 一种创建定时任务的方式是配置CELERYBEAT_SCHEDULE: #每30秒调用task.add from datetime import timedelta CELERYBEA

  • Python3.6 Schedule模块定时任务(实例讲解)

    一,编程环境 PyCharm2016,Anaconda3 Python3.6 需要安装schedule模块,该模块网址:https://pypi.python.org/pypi/schedule 打开Anaconda Prompt,输入:conda install schedule 提示:Package Not Found Error 于是,使用 pip 安装.由于Anaconda3 中已经自带了pip,如下图: 于是 cmd 命令行切换到 scripts 目录,执行 pip.exe insta

  • Python3中常用的处理时间和实现定时任务的方法的介绍

    无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实现,在python2版本中的实现略有不同,有时间会再写一篇以便大家区分. 1.计算明天和昨天的日期 #! /usr/bin/env python #coding=utf-8 # 获取今天.昨天和明天的日期 # 引入datetime模块 import datetime #计算今天的时间 today = datetime.date.today() #计算

  • python 每天如何定时启动爬虫任务(实现方法分享)

    python2.7环境下运行 安装相关模块 想要每天定时启动,最好是把程序放在linux服务器上运行,毕竟linux可以不用关机,即定时任务一直存活: #coding:utf8 import datetime import time def doSth(): # 把爬虫程序放在这个类里 print(u'这个程序要开始疯狂的运转啦') # 一般网站都是1:00点更新数据,所以每天凌晨一点启动 def main(h=1,m=0): while True: now = datetime.datetim

  • Python定时任务随机时间执行的实现方法

    背景: 有一个爬虫服务,需要定时从公开网站上拉取一些数据,为了避免被识别为爬虫(防爬虫的识别需要根据很多特征,时间仅仅是其中一个维度),需要在指定的时间内,随机生成一个时间爬取 脚本是python写的,直接上代码... import logging import traceback from datetime import datetime from apscheduler.schedulers.background import BackgroundScheduler scheduler =

  • PHP间隔一段时间执行代码的方法

    本文实例讲述了PHP间隔一段时间执行代码的方法.分享给大家供大家参考.具体分析如下: PHP如何设置每隔一段时间自动执行某段代码?例如定时生成静态文件之类的,这就需要设置休眠时间,即每隔一段时间程序就会调用某段代码. 代码如下: 复制代码 代码如下: ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.  set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去  $interv

  • python画图把时间作为横坐标的方法

    1.需要将时间字符串转换成datetime类型,语法:data['time'] = pd.to_datetime(data['time']) 2.将时间列设置成索引列data.set_index('time') 3.画图分两种 (1) matplotlib.pyplot方式 打印某一列数据,直接data['some_columns'].plot(),会自动将时间作为横坐标 (2) pycharts方式 from pyecharts import Bar bar = Bar("数据分析"

  • python 实现UTC时间加减的方法

    如下所示: #!/usr/bin/env python # -*- coding:utf-8 -*- import datetime time_delta = datetime.timedelta(hours=-2) time_now = datetime.datetime.utcnow() invalid_time = str(time_now + time_delta)[:19] print invalid_time 以上这篇python 实现UTC时间加减的方法就是小编分享给大家的全部内容

  • Python NumPy随机抽模块介绍及方法

    目录 1. 随机数 2. 随机抽样 3. 正态分布 4. 伪随机数的深度思考 1. 随机数 np.random.random()是最常用的随机数生成函数,该函数生成的随机数随机均匀分布于[0, 1)区间.如果不提供参数,np.random.random()函数返回一个浮点型随机数.np.random.random()函数还可以接受一个整型或元组参数,用于指定返回的浮点型随机数数组的结构(shape).也有很多人习惯使用np.random.rand()函数生成随机数,其功能和np.random.r

  • 分享一下Python 开发者节省时间的10个方法

    Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源.还有运行时检查.完整快速的支持,可以执行各种任务的扩展. 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面.在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里...

  • Python生成随机验证码的两种方法

    使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法. 方法一: 利用range方法,对于range方法不清楚的同学,请参考文章<python开发的range()函数> # -*- coding: utf-8 -*- import random def generate_verification_code(len=6): ''' 随机生成6位的验证码 ''' # 注意: 这里我们生成的是0-9A-Za-z的列表,当然你

  • 改变 Python 中线程执行顺序的方法

    一.主线程会等待所有的子线程结束后才结束 首先我看下最普通情况下,主线程和子线程的情况. import threading from time import sleep, ctime def sing(): for i in range(3): print("正在唱歌...%d" % i) sleep(1) def dance(): for i in range(3): print("正在跳舞...%d" % i) sleep(1) if __name__ == '

  • Python使用当前时间、随机数产生一个唯一数字的方法

    本文实例讲述了Python使用当前时间.随机数产生一个唯一数字的方法.分享给大家供大家参考,具体如下: Python生成当前时间很简单,比Java的代码简短多了,Java产生时间可参考<Java获取当前系统事件System.currentTimeMillis()方法> 具体代码如下: #-*-coding:utf-8-*- import datetime now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

  • Python简单格式化时间的方法【strftime函数】

    本文实例讲述了Python简单格式化时间的方法,分享给大家供大家参考,具体如下: walker经常用到当前时间和相对时间,用来统计程序执行的效率,简单记一下,便于copy. >>> import time >>> startTime = time.time() >>> '%.2fs' % (time.time() - startTime) #相对时间 '24.51s' >>> '{:.2f}s'.format(time.time()

随机推荐