我写了一个简单的脚本,它使用线程从服务中检索数据。有异常错误“线程线程-13中的异常(最有可能在解释器关闭期间引发)”
__author__ = 'Igor'
import requests
import time
from multiprocessing.dummy import Pool as ThreadPool
ip_list = []
good_ip_list = []
bad_ip_list = []
progress = 0
with open('/tmp/ip.txt') as f:
ip_list = f.read().split()
def process_request(ip):
global progress
progress += 1
if progress % 10000 == 0:
print 'Processed ip:', progress, '...'
r = requests.get('http://*****/?ip='+ip, timeout=None)
if r.status_code == 200:
good_ip_list.append(ip)
elif r.status_code == 400:
bad_ip_list.append(ip)
else:
print 'Unknown http code received, aborting'
exit(1)
pool = ThreadPool(16)
try:
pool.map(process_request, ip_list)
except:
for name, ip_list in (('/tmp/out_good.txt', good_ip_list), ('/tmp/out_bad.txt', bad_ip_list)):
with open(name, 'w') as f:
for ip in ip_list:
print>>f, ip
但经过一些请求处理(40K-50K)我得到:螺纹加工-7
异常(解释关闭过程中最有可能提出的): 回溯(最近通话最后一个): 过程完成了退出代码0
尝试变更服务设置:
<timeout>999</timeout>
<connectionlimit>600</connectionlimit>
<httpthreads>32</httpthreads>
<workerthreads>128</workerthreads>
但还是同样的错误。任何人都可以帮助我 - 怎么了?
'打印> > f,ip'这是一个错字?追溯中还有其他什么吗? – 2015-03-13 08:21:26
'进步+ = 1'在语言与可变数据和使用多线程W/O任何保护...我停止看这一点;) – iced 2015-03-13 08:22:40
@PatrickCollins正如我所理解的 - 在requests.exceptions.ConnectionError引发问题,尝试以捕获它并继续pool.map但效果相同 – Igor 2015-03-13 08:34:05