diff --git a/proxywatchd.py b/proxywatchd.py index 4ef16e8..7dc387d 100644 --- a/proxywatchd.py +++ b/proxywatchd.py @@ -1648,9 +1648,20 @@ class Proxywatchd(): for job in self.collected if job.failcount == 0 and job.exit_ip] + # Separate dead proxies for deletion + dead_proxies = [a[-1] for a in args if a[0] == DEAD_PROXY or a[0] >= max_fail] + live_args = [a for a in args if a[0] != DEAD_PROXY and a[0] < max_fail] + with self._db_context() as db: query = 'UPDATE proxylist SET failed=?,tested=?,dronebl=?,country=?,proto=?,success_count=?,total_duration=?,mitm=?,consecutive_success=?,asn=?,protos_working=?,last_check=?,last_target=? WHERE proxy=?' - db.executemany(query, args) + if live_args: + db.executemany(query, live_args) + + # Delete proxies that reached max_fail + if dead_proxies: + db.executemany('DELETE FROM proxylist WHERE proxy=?', + [(p,) for p in dead_proxies]) + _log('deleted %d dead proxies' % len(dead_proxies), 'watchd') # Batch update latency metrics for successful proxies if latency_updates: