PHP提交任务给Python,Python执行来自PHP的任务

本文介绍了一种使用Python调用PHP分页接口以解决数据量大、PHP一次性执行不完的问题。通过创建Python脚本来分批执行任务,并设置超时控制和执行时间记录,目前程序能在36秒内完成,后期计划进行优化,如加入队列处理以防止超时。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值