Python socket.gethostbyname
использует распознаватель операционной системы и не имеет API для очистки своего кэша.Кэш (который может быть кеширующим DNS-сервером, используемым операционной системой, операционной системой или компонентом стандартной библиотеки) является фундаментальным элементом системы DNS, и «правильный способ» справиться с ним - ждать, пока значение TTL записиистекает (операционная система должна удалить устаревшее значение из кэша).При обновлении DNS вам, вероятно, следует настроить TTL старого значения, настроенного ранее.
Вы также можете использовать реализацию Python DNS, например DNSPython, вместо использования socket.gethostbyname
- вы должны иметь полный контроль над кешем распознавателя(но не кэши NS, которые использует преобразователь).Хотя, вероятно, это не решит вашу проблему (я думаю, с существующим кодом).