需求:最近用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 还能容忍,以后会改进一下,比如加入队列处理防止超时