2014-11-28 2 views
0

현재 여러 웹 서버에 대해 python 스크립트를 실행 중입니다. 일반적인 작업은 깨진 (외부) 링크를 CMS 내에서 확인하는 것입니다. 지금까지는 스크립트가 꽤 잘 돌아 왔지만, 약 50 개의 내부 프로젝트를 테스트하고 각각 수백 개의 서브 페이지로 테스트합니다. 이것은 로 끝납니다. 수천 개의 외부 링크를 확인해야합니다..URL 도달 가능 확인 개선

그 이유는 내가 멀티 스레드를 추가 - 내 소망대로 성능이 향상되었습니다. 그러나 여기에 문제가 온다. 검사 할 페이지가있는 서버가있는 경우 동일한 서버 (알려진 문제 또는 작업의 번들)에 대한 링크 목록이 포함되어 있으면 대상 시스템이 느려집니다. 나도 내 자신의 서버 나 서버가 느려지는 것을 좋아하지 않는다.

가 현재 나는 "나사 위치"가 나타날 때까지 0.5 초 대기보다 20 개 스레드 및 까지 를 실행 사용할 수 있습니다. URL이 깨 졌는지 확인하려면 urllib2로그에서 오는 urlopen (요청)을 처리 할 때마다 HTTPError이 발생합니다. 동일한 서버에 여러 개의 URL 목록으로 돌아 가기 ... 내 스크립트는 웹 서버에 "멀티플 스레딩 (multi-threading)"의 원인으로 최대 20 개의 동시 요청을 "범람"시킵니다.

이 스크립트가 실행되는 치수/URL을 확인해야한다는 아이디어 만 있습니다. 20 개의 스레드 만 사용하면 현재 스크립트가 4 개 프로젝트에서 45 분 실행 시간이 "느려집니다". 그리고 이것은 단지 점검 중입니다 .. 다음 단계는 고장난 URL을 확인하는 것입니다. 현재 스크립트를 사용하면 서버 모니터링 내에서 1000ms 응답 시간의 피크를 볼 수 있습니다.

모두가 얼마나 일반적으로이 스크립트를 개선하는 아이디어를 가지고 있습니까? 아니면이 큰 양의 URL을 확인할 수있는 더 나은 방법이 있습니까? 단일 대상에 대해 10 개의 요청이있는 경우 스레드를 일시 중지하는 카운터 일 수 있습니까? 모든 제안

+1

'HEAD'로 시작하여 콘텐츠가 아닌 상태를 원한다고 서버에 알리고 있습니까? –

답변