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

Comments are closed.

Post Navigation