Mam duże zadanie skrobania - większość czasu skryptu spędza się na blokowaniu ze względu na duże opóźnienie sieci. Próbuję wielowątkowego scenariusza, więc mogę zrobić kilka żądań jednocześnie, ale około 10% moich wątków umiera z powodu następującego błęduWielowątkowe żądania sieciowe w pythonie - "Nazwa lub usługa nieznana"
URLError: <urlopen error [Errno -2] Name or service not known>
Pozostałe 90% zakończona pomyślnie. Żądam wielu stron z tej samej domeny, więc wygląda na to, że może być problem z DNS. Wykonuję 25 żądań na raz (25 wątków). Wszystko działa dobrze, jeśli ograniczę się do 5 żądań na raz, ale gdy dostanę około 10 żądań, czasami zaczynam widzieć ten błąd.
Przeczytałem Repeated host lookups failing in urllib2 , który opisuje ten sam problem, który mam i podążałem za sugestiami, ale bezskutecznie.
Próbowałem również używać wieloprocesorowego modułu zamiast wielowątkowości, otrzymuję to samo zachowanie - około 10% procesów umiera z tym samym błędem - co prowadzi mnie do przekonania, że to nie jest problem z urllib2 ale coś jeszcze.
Czy ktoś może wyjaśnić, co się dzieje i zasugerować, jak to naprawić?
UPDATE
Gdybym ręcznie zakodować adres IP strony do mojego skryptu wszystko działa idealnie, więc ten błąd zdarza się czasami podczas wyszukiwania DNS.
Czy masz dostęp do serwera? Być może natkniesz się na coś, z czym nie musisz się martwić, lub jeśli serwer nie jest tak ciężki, możesz go przeciążać ... – jswolf19
To ważna strona internetowa, która może obsłużyć setki lub tysiące równoczesnych próśb, moje 25 nie robi nawet małego wgięcia. Jestem prawie pewien, że jest to problem z rozdzielczością dns, ponieważ jeśli wymieniam nazwę domeny na adres IP, mój skrypt działa perfekcyjnie - więc strona nie zamyka mnie wyraźnie. W tym momencie chcę tylko zrozumieć, dlaczego wyszukiwania DNS zawodzą. –
Może to być problem z serwerem DNS, który dopuszcza tak wiele żądań od klienta przez określony czas lub co ty. – jswolf19