Я пытаюсь выполнить итерацию метода и передать другие аргументы, необходимые этому методу. Для этого я думаю, что лучше всего использовать метод map ().
Точнее, мне нужно выполнить несколько DNS-запросов (A / AAAA / NS / MX) для нескольких FQDN (полностью определенное доменное имя, ie: www.mywebsite.com).
Поскольку запросы могут ждать несколько секунд в ожидании ответа, я использую потоки для компенсации.
Вот мой фактический код:
with ThreadPoolExecutor(max_workers=4) as executor:
for fqdn in fqdn_list:
future_01 = executor.submit(get_dns_query, fqdn, 'A')
future_02 = executor.submit(get_dns_query, fqdn, 'AAAA')
ip = future_01.result()
ipv6 = future_02.result()
Теперь то, что я считаю лучшим:
with ThreadPoolExecutor(max_workers=4) as executor:
ip = executor.map(get_dns_query, fqdn, 'A')
ipv6 = executor.submit(get_dns_query, fqdn, 'AAAA')
get_dns_query будет выполнять запрос DNS и требует FQDN и RDTYPE ( A / AAAA / NS / MX)
Я хочу, чтобы map () выполнялся по FQDN , и я также хочу иметь возможность передавать RDTYPE как нормальный аргумент.
Пока я понял, что это не цель карты. Но решения, похоже, существуют: Решения Functools или Itertools
К сожалению, я не могу их понять, и применимы ли они к моему случаю.
Есть идеи?