Python: 如果满足特定条件,如何杀死或休眠进程?
Python: How to kill or sleep a process if a certain condition met?
我构建了一个让 运行 无限循环的抓取工具。它还在 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')
处理您的问题的一个非常简单的方法:
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})
这将阻止您的工作人员,直到有新的代理可用。
我构建了一个让 运行 无限循环的抓取工具。它还在 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')
处理您的问题的一个非常简单的方法:
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})
这将阻止您的工作人员,直到有新的代理可用。