worker: check tor before claiming work
This commit is contained in:
52
ppf.py
52
ppf.py
@@ -498,8 +498,6 @@ def worker_main(config):
|
||||
jobs_completed = 0
|
||||
proxies_tested = 0
|
||||
start_time = time.time()
|
||||
last_tor_check = time.time()
|
||||
tor_check_interval = 300 # Check Tor every 5 minutes
|
||||
current_tor_ip = None
|
||||
consecutive_tor_failures = 0
|
||||
worker_profiling = config.args.profile or config.common.profiling
|
||||
@@ -546,33 +544,33 @@ def worker_main(config):
|
||||
|
||||
try:
|
||||
while True:
|
||||
# Periodic Tor health check
|
||||
now = time.time()
|
||||
if now - last_tor_check > tor_check_interval:
|
||||
working, tor_ip = check_tor_connectivity(config.torhosts)
|
||||
last_tor_check = now
|
||||
if working:
|
||||
# Tor check before claiming work - don't claim if Tor is down
|
||||
working, tor_ip = check_tor_connectivity(config.torhosts)
|
||||
if not working:
|
||||
consecutive_tor_failures += 1
|
||||
_log('tor down before claiming work (consecutive: %d)' % consecutive_tor_failures, 'warn')
|
||||
try:
|
||||
worker_send_heartbeat(server_url, wstate['worker_key'], False, None, worker_profiling)
|
||||
except NeedReregister:
|
||||
do_register()
|
||||
if consecutive_tor_failures >= 2:
|
||||
_log('tor appears down, waiting before claiming work', 'error')
|
||||
working, current_tor_ip = wait_for_tor()
|
||||
consecutive_tor_failures = 0
|
||||
if tor_ip != current_tor_ip:
|
||||
_log('tor circuit rotated: %s' % tor_ip, 'info')
|
||||
current_tor_ip = tor_ip
|
||||
# Send periodic heartbeat
|
||||
try:
|
||||
worker_send_heartbeat(server_url, wstate['worker_key'], True, tor_ip, worker_profiling)
|
||||
except NeedReregister:
|
||||
do_register()
|
||||
else:
|
||||
consecutive_tor_failures += 1
|
||||
_log('tor connectivity failed (consecutive: %d)' % consecutive_tor_failures, 'warn')
|
||||
if consecutive_tor_failures >= 2:
|
||||
_log('tor appears down, pausing work', 'error')
|
||||
try:
|
||||
worker_send_heartbeat(server_url, wstate['worker_key'], False, None, worker_profiling)
|
||||
except NeedReregister:
|
||||
do_register()
|
||||
working, current_tor_ip = wait_for_tor()
|
||||
consecutive_tor_failures = 0
|
||||
last_tor_check = time.time()
|
||||
time.sleep(10)
|
||||
continue
|
||||
else:
|
||||
consecutive_tor_failures = 0
|
||||
if tor_ip != current_tor_ip:
|
||||
if current_tor_ip:
|
||||
_log('tor circuit rotated: %s' % tor_ip, 'info')
|
||||
current_tor_ip = tor_ip
|
||||
# Send heartbeat to manager
|
||||
try:
|
||||
worker_send_heartbeat(server_url, wstate['worker_key'], True, tor_ip, worker_profiling)
|
||||
except NeedReregister:
|
||||
do_register()
|
||||
|
||||
# Get work from master
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user