Использование пула с множественной обработкой для попадания в API и сохранения ответа в mysql для примерно 5 тыс. Запросов. Программа никогда не завершается даже после полного выполнения. Обнаружено, что это происходит, поскольку процессы все еще открыты после выполнения.
Пробовал с помощью join (), terminate (). Ничего не работает.
def fetchAndStore(query):
conn = pymysql.connect(host=host,
user=user,
passwd=passwd,
db=db)
x = conn.cursor()
full_url = getFullUrl(redirection_service, query)
response = urllib2.urlopen(full_url)
html = response.read()
data = json.loads(html)
if data is not None:
store = json.dumps(data["RESPONSE"]["redirectionStore"])
else:
store = 'search.flipkart.com'
try:
stmt = "INSERT INTO golden_response(`store`) VALUES ('%s')" %( store)
x.execute(stmt)
conn.commit()
conn.close()
except Exception, e:
global failure
failure += 1
print e
return "Done"
#main
queries = db_connection()
pool = Pool(processes=20, maxtasksperchild=5)
results = []
for query in queries:
results.append(pool.apply_async(fetchAndStore, (query,)))
pool.close()
pool.join()
print "completed"
Процесс должен завершиться, и печать завершена в идеальной ситуации.