Python:如果满足某个条件,如何杀死或睡眠过程?

时间:2017-08-03 10:41:34

标签: python python-requests python-multiprocessing

我已经构建了一个可以无限循环运行的scraper。它还在10多台AWS机器上使用代理池。我想让它像是一个IP点击X次然后它不应再被击中,到目前为止,我正在使用MySQL达到目的。问题是,如果所有代理完成配额,我怎样才能让它睡觉或延迟并在新的一天获得新生活。现在我做了以下但最终它终止了整个程序:

def parse():
  if random_proxy == '': # ALL Proxies finished quota for the day
     raise Exception('Proxy Not Found')
   r = session.get(u, headers=headers, proxies={'https': proxy_url})

if __name__ == '__main__':
    idx = 0
    exception_string = ''
    POOL_COUNT = 50
  try:
    if conn is not None:
        links = get_links(conn, POOL_COUNT)
        if conn.open:
          conn.close()
           with Pool(POOL_COUNT) as p:
             result = p.map(parse, links)
except Exception as ex:
        print('Main program exception')

1 个答案:

答案 0 :(得分:1)

处理问题的一种非常简单的方法:

SLEEP_INTERVAL = 300  # 5 minutes

def parse():
    random_proxy = get_random_proxy()

    while not random_proxy:
        # ALL Proxies finished quota for the day
        time.sleep(SLEEP_INTERVAL)  
        random_proxy = get_random_proxy()

    r = session.get(u, headers=headers, proxies={'https': proxy_url})

这将阻止您的工作人员,直到有新的代理人可用。