2010-12-05 8 views
1

폴란드어 블로그 모니터링 웹 사이트를 개발 중이며 대량의 콘텐츠를 python으로 다운로드하여 "모범 사례"를 찾고 있습니다.다중 URL 풀 구성하기

다음은 워크 플로우의 샘플 sheme입니다 :

http://img577.imageshack.us/img577/2971/scheme.png

설명 : 나는 (약 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!

답변