Имам код на Python, който използва nose_parameterized както е показано по-долу:
from nose_parameterized import parameterized
from multiprocessing.pool import ThreadPool
import urllib2
def make_http_call(url, req_type):
opener = urllib2.build_opener() # <=== this line causes it to freeze
return 1
pool = ThreadPool(processes=4)
results = []
urls = ['a', 'b', 'c', 'd']
for url in urls:
results.append(pool.apply_async(make_http_call, (url, 'html')))
d = {'add': []}
for ind, res in enumerate(results):
d['add'].append((res.get(), 2+ind, 3+ind))
@parameterized(d['add'])
def test_add(a, b, c):
assert a+b == c
Това е фиктивната версия на кода. По принцип трябва да заредя тестови параметри с http отговори на заявки и тъй като има много URL адреси, искам да ги направя многонишково. Веднага след като добавя urllib2.build_opener, той замръзва с помощта на nos (но все още работи добре с python). Освен това опитах urllib2.urlopen; същия проблем. Някакви идеи дали има „правилен“ (с възможност за отстраняване на грешки) начин да се заобиколи това?