python每天定时9点执行_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)

时间: 2019-08-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值