##python代码
# -*-coding:utf-8-*-
import sys,os
import MySQLdb
import time
import urllib2
import urllib
import threading
import requests
event=threading.Event()
lock=threading.RLock()
def _wordking():
global gl_num
#链接Mysql
conn=MySQLdb.connect(host="127.0.0.1",user="root",passwd="xxx",db="xxx",charset="utf8")
cursor=conn.cursor()
try:
conn.ping(True)
except Exception,e:
conn=MySQLdb.connect(host="127.0.0.1",user="root",passwd="xxx",db="xxx",charset="utf8")
cursor=conn.cursor()
print e
#查询数据
a_list=[]
try:
n=cursor.execute("select url from app_dsrw limit 4")
#获取返回集
lists=cursor.fetchall()
#遍历url
for row in lists:
for i in row:
a_list.append(i)
except Exception, e:
print e
#获取遍历出来的数量
num=len(a_list)
if num==0:
os.system("killall -9 python2.7")
event.set()
num=-1
x=0
left_count=num;
while x<num:
event.clear()
if left_count>4:
count=4
else:
count=left_count
gl_num=count
for i in xrange(count):
t=threading.Thread(target=exec_url,args=(a_list[x+i],))
t.start()
event.wait()
x += count
left_count -= count
#print left_count
#关闭数据库
cursor.close()
conn.close()
def exec_url(arg):
url=arg
#req=urllib2.Request(url)
#res_data=urllib2.urlopen(req,timeout=600)
#res=res_data.read()
r = requests.get(url,timeout=60000)
#req=urllib2.Request(url)
#res_data=urllib2.urlopen(req,timeout=60000)
#res=res_data.read()
lock.acquire()
global gl_num
gl_num -=1
if gl_num<=0:
event.set()
lock.release()
def daemonize(stdin="/dev/null",stdout="/dev/null",stderr="dev/null"):
try:
pid=os.fork()
if pid>0:
sys.exit(0)
except OSError, e:
sys.stderr.write("form #1 failed:(%d) %s\n" % (e.error,e.strerror))
sys.exit(1)
os.chdir("/")
os.umask(0)
os.setsid()
try:
pid=os.fork()
if pid>0:
sys.exit(0)
except OSError, e:
sys.stderr.write("fork #2 failed:(%d) %s\n" % (e.error,e.strerror))
sys.exit(1)
for f in sys.stdout,sys.stderr:
f.flush()
si=file(stdin,"r")
so=file(stdout,"a+")
se=file(stderr,"a+",0)
os.dup2(si.fileno(),sys.stdin.fileno())
os.dup2(so.fileno(),sys.stdout.fileno())
os.dup2(se.fileno(),sys.stderr.fileno())
if __name__=="__main__":
#daemonize()
_wordking()