import urllib2
import socket
import threading
import fcntl
#import portalocker
def test_urls(f1,f2,f3,f4,threadnum):
while 1:
fcntl.flock(f1, fcntl.LOCK_EX)
urlstr=f1.readline()
fcntl.flock(f1,fcntl.LOCK_UN)
if urlstr:
datastream=None
try:
request = urllib2.Request(urlstr)
opener = urllib2.build_opener()
datastream = opener.open(request)
if datastream:
if datastream.headers.has_key('Expires'):
fcntl.flock(f2, fcntl.LOCK_EX)
f2.write(urlstr)
fcntl.flock(f2,fcntl.LOCK_UN)
else:
str_cache_control = datastream.headers.get('cache-control')
if str_cache_control and str_cache_control.find('max-age')!= '-1':
fcntl.flock(f2, fcntl.LOCK_EX)
f2.write(urlstr)
fcntl.flock(f2,fcntl.LOCK_UN)
else:
fcntl.flock(f3, fcntl.LOCK_EX)
f3.write(urlstr)
fcntl.flock(f3,fcntl.LOCK_UN)
except IOError, e:
fcntl.flock(f4, fcntl.LOCK_EX)
f4.write(urlstr)
fcntl.flock(f4,fcntl.LOCK_UN)
print threadnum
else:
break
#set socket timeout
timeout=10
socket.setdefaulttimeout(timeout)
f1=open("urls.txt","r")
f2=open('haveExprires.txt','w')
f3=open('noExprires.txt','w')
f4=open('cantBeOpen_urls.txt', 'w')
threads = []
num = 10
for x in xrange(0,num):
threads.append(threading.Thread(target=test_urls, args=(f1,f2,f3,f4,x,)))
for t in threads:
t.start()
for t in threads:
t.join()
f1.close()
f2.close()
f3.close()
f4.close()
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com