Добрый день, есть задача брать урлы и пинговать, то есть проверять доступны ли хосты. Нужно проверить допустим 30000 хостов в течении минуты. Какие подходы можно использовать ?
Я пробовал спомощью библиотеки requests-futures, но этого недостаточно.
class GeneratorReportStatNodes:
def __init__(self):
arg_parser = ArgParser()
self.file_name_with_urls = arg_parser.namespace.file_name_with_urls
self.file_name_for_unloading_stat = arg_parser.namespace.file_name_for_unloading_stat
self.session = FuturesSession(
executor=ThreadPoolExecutor(max_workers=100),
)
def get_stat(self):
self._get_result(self.file_name_with_nodes)
def _head(self, url: str):
try:
return self.session.head(url)
except ConnectionError:
return self.session
def _get_result(self, file_name: str):
futures = []
cnt = 0
with open(file_name, "r") as f:
for url in f:
futures.append(
self._head(url)
)
for future in as_completed(futures):
res = future.result()
cnt += 1
print(res, cnt)