def siteDownload(self, address): from Site import Site from Site import SiteManager SiteManager.site_manager.load() logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server.start() site = Site(address) on_completed = gevent.event.AsyncResult() def onComplete(evt): evt.set(True) site.onComplete.once(lambda: onComplete(on_completed)) print "Announcing..." site.announce() s = time.time() print "Downloading..." site.downloadContent("content.json", check_modifications=True) print on_completed.get() print "Downloaded in %.3fs" % (time.time() - s)
def sitePublish(self, address, peer_ip=None, peer_port=15441, inner_path="content.json"): global file_server from Site import Site from Site import SiteManager from File import FileServer # We need fileserver to handle incoming file requests from Peer import Peer site = SiteManager.site_manager.get(address) logging.info("Loading site...") site.settings[ "serving"] = True # Serving the site even if its disabled try: ws = self.getWebsocket(site) logging.info("Sending siteReload") self.siteCmd(address, "siteReload", inner_path) logging.info("Sending sitePublish") self.siteCmd(address, "sitePublish", { "inner_path": inner_path, "sign": False }) logging.info("Done.") except Exception as err: logging.info("Can't connect to local websocket client: %s" % err) logging.info("Creating FileServer....") file_server = FileServer() file_server.start() site.connection_server = file_server file_server_thread = gevent.spawn( file_server.start, check_sites=False) # Dont check every site integrity time.sleep(0.001) # Started fileserver file_server.openport() if peer_ip: # Announce ip specificed site.addPeer(peer_ip, peer_port) else: # Just ask the tracker logging.info("Gathering peers from tracker") site.announce() # Gather peers published = site.publish(5, inner_path) # Push to peers if published > 0: time.sleep(3) logging.info("Serving files (max 60s)...") gevent.joinall([file_server_thread], timeout=60) logging.info("Done.") else: logging.info( "No peers found, sitePublish command only works if you already have visitors serving your site" )
def siteAnnounce(self, address): from Site.Site import Site from Site import SiteManager SiteManager.site_manager.load() logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server.start() logging.info("Announcing site %s to tracker..." % address) site = Site(address) s = time.time() site.announce() print("Response time: %.3fs" % (time.time() - s)) print(site.peers)
def siteNeedFile(self, address, inner_path): from Site import Site from Site import SiteManager SiteManager.site_manager.load() def checker(): while 1: s = time.time() time.sleep(1) print "Switch time:", time.time() - s gevent.spawn(checker) logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server.start() site = Site(address) site.announce() print site.needFile(inner_path, update=True)