diff --git a/src/Site/Site.py b/src/Site/Site.py index 54a20e0e..91c04cde 100644 --- a/src/Site/Site.py +++ b/src/Site/Site.py @@ -227,6 +227,7 @@ class Site: def announce(self, force=False): if time.time() < self.last_announce+15 and not force: return # No reannouncing within 15 secs self.last_announce = time.time() + error = 0 for protocol, ip, port in SiteManager.TRACKERS: if protocol == "udp": @@ -240,8 +241,7 @@ class Site: back = tracker.poll_once() peers = back["response"]["peers"] except Exception, err: - self.log.error("Tracker error: %s" % Debug.formatException(err)) - time.sleep(1) + error += 1 continue added = 0 @@ -252,9 +252,14 @@ class Site: if added: self.worker_manager.onPeers() self.updateWebsocket(peers_added=added) - self.log.debug("Found %s peers, new: %s" % (len(peers), added)) + self.log.debug("Found %s peers, new: %s" % (len(peers), added)) else: pass # TODO: http tracker support + + if error < len(SiteManager.TRACKERS): # Less errors than total tracker nums + self.log.debug("Announced to %s trackers, error: %s" % (len(SiteManager.TRACKERS), error)) + else: + self.log.error("Announced to %s trackers, failed" % len(SiteManager.TRACKERS)) # Check and try to fix site files integrity diff --git a/src/Site/SiteManager.py b/src/Site/SiteManager.py index 41a086b3..44ffbb03 100644 --- a/src/Site/SiteManager.py +++ b/src/Site/SiteManager.py @@ -4,10 +4,9 @@ import gevent TRACKERS = [ ("udp", "sugoi.pomf.se", 2710), ("udp", "open.demonii.com", 1337), - ("udp", "bigfoot1942.sektori.org", 6969), ("udp", "tracker.coppersurfer.tk", 80), ("udp", "tracker.leechers-paradise.org", 6969), - ("udp", "tracker.blazing.de", 80), + ("udp", "9.rarbg.com", 2710), ] # Load all sites from data/sites.json diff --git a/src/Test/test.py b/src/Test/test.py index 6c99d3bd..23238560 100644 --- a/src/Test/test.py +++ b/src/Test/test.py @@ -41,6 +41,33 @@ class TestCase(unittest.TestCase): print "Taken: %.3fs, " % (time.time()-s), + def testTrackers(self): + from Site import SiteManager + from lib.subtl.subtl import UdpTrackerClient + import hashlib + + ok = 0 + for protocol, ip, port in SiteManager.TRACKERS: + address = "test" + if protocol == "udp": + tracker = UdpTrackerClient(ip, port) + peers = None + try: + tracker.connect() + tracker.poll_once() + tracker.announce(info_hash=hashlib.sha1(address).hexdigest(), num_want=5) + back = tracker.poll_once() + peers = back["response"]["peers"] + except Exception, err: + peers = None + print "Tracker error: %s://%s:%s %s" % (protocol, ip, port, err) + if peers != None: + ok += 1 + + self.assertGreater(ok, 1) + + + if __name__ == "__main__": unittest.main(verbosity=2)