폴란드어 블로그 모니터링 웹 사이트를 개발 중이며 대량의 콘텐츠를 python으로 다운로드하여 "모범 사례"를 찾고 있습니다.다중 URL 풀 구성하기
다음은 워크 플로우의 샘플 sheme입니다 :
설명 : 나는 (약 1000) RSS 피드의 데이터베이스를 분류 한
. 매시간마다 새로운 항목이 게시되면 피드를 확인해야합니다. 그렇다면 각 새 항목을 분석해야합니다. 분석 프로세스는 각 문서의 메타 데이터를 처리하고 내부에서 발견 된 모든 이미지를 다운로드합니다. 코드의
간체 하나의 스레드 버전 :
for url, etag, l_mod in rss_urls:
rss_feed = process_rss(url, etag, l_mod) # Read url with last etag, l_mod values
if not rss:
continue
for new_item in rss_feed: # Iterate via *new* items in feed
element = fetch_content(new_item) # Direct https request, download HTML source
if not element:
continue
images = extract_images(element)
goodImages = []
for img in images:
if img_qualify(img): # Download and analyze image if it could be used as a thumbnail
goodImages.append(img)
그래서 내가의 RSS 피드 throught를 다운로드 반복은 새 항목 피드. 각 새 항목을 피드에서 다운로드하십시오. 항목의 각 이미지를 다운로드하고 분석하십시오.
HTTR 요청은 follwing을 단계에서 나타납니다 - 다운로드 RSS XML 문서 - 나는 파이썬 gevent을 시도하기로 결정했습니다
각 항목의 모든 이미지를 다운로드 (www.gevent - RSS 에서 발견 X 항목을 다운로드 .org) 라이브러리를 사용하여 여러 개의 URL을 처리 할 수 있습니다.
결과로 얻을 수있는 결과 : - 나열된 모든 콘텐츠 항목을 병렬로 다운로드 할 수 있습니다.
가장 좋은 방법은 무엇입니까?
나는 parralel 프로그래밍에 익숙하지 않기 때문에 잘 모르겠다. (이 비동기 요청은 아마도 parralel 프로그래밍과 전혀 관련이 없다.) 나는 그런 작업이 어떻게 성숙한 상태인지 잘 모른다. 세계. 45 분마다 cronjob를 통해 실행 처리 스크립트 - - 내부의 매우 beggining에 기록 된 PID 프로세스에 파일을 잠글 시도 :
내 마음에 와서 유일한 아이디어는 다음과 같은 기술을 사용하는 것입니다. 잠금이 실패한 경우이 PID에 대한 프로세스 목록을 확인하십시오. PID가 발견되지 않으면, 아마 프로세스가 어느 시점에서 실패하고 새로운 프로세스를 손상시킬 수 있습니다. - RSS 피드에 대한 gevent 풀 실행 작업에 대한 래퍼를 통해 모든 단계 (새 항목이 발견됨)에서 항목을 다운로드하려면 새로운 작업을 추가하고, 다운로드 한 모든 항목에서 이미지 다운로드를위한 작업을 추가하십시오. - FIFO 모드에서 빈 슬롯을 사용할 수 있으면 몇 초마다 작업이 실행 중인지 확인하고 quique에서 새 작업을 실행하십시오.
소리 괜찮아요. 그러나 이런 종류의 작업에는 "모범 사례"가 있으며 지금은 바퀴를 다시 만들고 있습니다. 그 이유는 여기에 내 질문을 게시하고 있습니다.
Thx!