2013-11-26 3 views
1

현재 파이썬에서는 여러 사이트에 동시에 연결 (및 분석)하기 위해 선물을 사용하고 있습니다.파이썬 - 앞으로 시간 초과시 다시 제출

with concurrent.futures.ThreadPoolExecutor(max_workers = 8) as executor: 
     futures = {executor.submit(analyser.analyse, name, aggregator, past, current): 
         (name, aggregator) for name, aggregator in aggregators.iteritems()} 

     for future in concurrent.futures.as_completed(futures): 
      records += future.result() 

그러나 미래는 때때로 특정 웹 페이지에 "붙어 있습니다"적어도 내 가정입니다. (일반적으로, 내가 풀려고하는 문제는 스크립트가 cronjob에서 실행될 때 프로세스가 때때로 멈추는 것입니다).

내가 원하는 것은 특정 선물에 대해 "제한 시간"을 구현하는 것이므로 시간 제한을 초과하면 미래가 다시 풀에 제출됩니다.

with concurrent.futures.ThreadPoolExecutor(max_workers = 8) as executor: 
     futures = {executor.submit(analyser.analyse, name, aggregator, past, current): 
         (name, aggregator) for name, aggregator in aggregators.iteritems()} 

     for future in concurrent.futures.as_completed(futures): 
      try: 
       records += future.result(timeout = 30) 
      except concurrent.futures.TimeoutError: 
       if DEBUG: 
        print("Future took too long, retrying!") 

불행하게도, 난 단지 "원시"객체, 그리고 선물을 받아 집행 인으로, 다시 풀에 미래를 다시 제출하는 방법을 찾을 수 없습니다. 그렇게하는 Pythonic 방식이 있습니까?

답변

관련 문제