需求:最近用php做了一个功能需要用shell定时跑,但是这个数据很大,php一次执行不完,所以需要分页。那么问题来了,由于并不知道要分多少页面。shell脚本的crontab并不太好设定
那么我就用Python写了个程序,来调用这个分页的php接口。好了废话少说,直接上代码
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys import urllib2 import json import datetime starttime = datetime.datetime.now() types = sys.argv[1] counts = sys.argv[2] setDomain = 'http://localhost' url =setDomain+'/views/count?type='+types+'&count='+counts def geturls( strurl ): # print strurl getResult = urllib2.urlopen(strurl,timeout = 10) res = int(getResult.read()) getResult.close() if res != 1: print 'timeout' return if types and counts: data = urllib2.urlopen(url,timeout = 10) getJson = data.read() s = json.loads(getJson) if s['code'] == 0: for urls in s['message']: geturls(urls) else: print s['message'] # get time endtime = datetime.datetime.now() end = (endtime - starttime).seconds print 'success : '+str(end)+' S' else: sys.exit(0)
把上面的代码保存成 do.py
# python do.py 1 250
success : 36 S
简单说明一下 url接口是用来获取分页数目的 而urls最终是执行分页 用urllib2.urlopen获取结果 datetime获取执行时间
目前的程序需要执行36S 还能容忍,以后会改进一下,比如加入队列处理防止超时