Код в моей программе, по сути, выполняет 10 запросов Python одновременно и одновременно обрабатывает их вывод, это работало некоторое время, но я что-то изменил и не могу понять, что его сломало.
Следующий код является кодом, который вызывает, код кажется зависшим между строками 3 и 4, поэтому в процессе выполнения многопоточных запросов.
Строка 'print («не удалось закрыть») не печатается, что указывает на то, что программа не достигает инструкции pool.close ().
listoftensites = listoftensites
pool = Pool(processes=10) # Initalize a pool of 10 processes
listoftextis, listofonline = zip(*pool.map(onionrequestthreaded, listoftensites)) # Use the pool to run the function on the items in the iterable
print("failed to close ")
pool.close()
# this means that no more tasks will be added to the pool
pool.join()
Функция, которая вызывается, в которой она зависает, сразу после строки «print (« fail in return »)», это может указывать на то, что запросы не завершаются должным образом и возвращают ожидаемые значения.
def onionrequestthreaded(onionurl):
session = requests.session()
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'
onionurlforrequest = "http://" + onionurl
#print(onionurlforrequest)
print("failed with proxy session")
try:
print("failed in request")
r = session.get(onionurlforrequest, timeout=15, allow_redirects=True)
online = 2
print("failed in text extraction")
textis = r.text
except:
print("failed in except")
#print("failed")
online = 1
textis = ""
print("failed in return")
return textis, online
Очень запутанно, но я, вероятно, делаю что-то простое. Пожалуйста, дайте мне знать, если есть решение, потому что я выдергиваю свои волосы.