Python定时任务随机时间执行的实现方法
背景:
有一个爬虫服务,需要定时从公开网站上拉取一些数据,为了避免被识别为爬虫(防爬虫的识别需要根据很多特征,时间仅仅是其中一个维度),需要在指定的时间内,随机生成一个时间爬取
脚本是python写的,直接上代码...
importlogging importtraceback fromdatetimeimportdatetime fromapscheduler.schedulers.backgroundimportBackgroundScheduler scheduler=BackgroundScheduler() defspider_schedule(): #spider_schedule是job_id scheduler.remove_job('spider_schedule') try: print'spiderstart...',datetime.now().strftime('%Y-%m-%d%X') #--------自己的业务代码------- pass #--------------------------- print'spiderend...',datetime.now().strftime('%Y-%m-%d%X') exceptExceptionase: printtraceback.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/envpython #@Time:2018/6/716:31 #@Author:PGIDYSQ #@File:PerformTaskTimer.py #定时执行任务命令 #1.定时任务代码 importtime,os,sched #schedule=sched.scheduler(time.time,time.sleep) #defperform_command(cmd,inc): #os.system(cmd) #print('task') #deftimming_exe(cmd,inc=60): #schedule.enter(inc,0,perform_command,(cmd,inc)) #schedule.run() #print('showtimeafter2seconds:') #timming_exe('echo%time%',2) #2.周期性执行任务 schedule=sched.scheduler(time.time,time.sleep) defperform_command(cmd,inc): #在inc秒后再次运行自己,即周期运行 schedule.enter(inc,0,perform_command,(cmd,inc)) os.system(cmd) deftimming_exe(cmd,inc=60): schedule.enter(inc,0,perform_command,(cmd,inc)) schedule.run()#持续运行,直到计划时间队列变成空为止 print('showtimeafter2seconds:') timming_exe('echo%time%',2) #3.循环执行命令 #importtime,os #defre_exe(cmd,inc=60): #whileTrue: #os.system(cmd) #time.sleep(inc) #re_exe("echo%time%",5)