diff --git a/src/Site/Site.py b/src/Site/Site.py index f7e3e88b..d600db87 100644 --- a/src/Site/Site.py +++ b/src/Site/Site.py @@ -376,7 +376,7 @@ class Site(object): # Update content.json on peers @util.Noparallel() - def publish(self, limit="default", inner_path="content.json"): + def publish(self, limit="default", inner_path="content.json", diffs={}): published = [] # Successfully published (Peer) publishers = [] # Publisher threads @@ -397,16 +397,16 @@ class Site(object): random.shuffle(peers_more) peers += peers_more[0:limit*2] - self.log.info("Publishing %s to %s/%s peers (connected: %s)..." % ( - inner_path, limit, len(self.peers), num_connected_peers + self.log.info("Publishing %s to %s/%s peers (connected: %s) diffs: %s..." % ( + inner_path, limit, len(self.peers), num_connected_peers, diffs.keys() )) if not peers: return 0 # No peers found event_done = gevent.event.AsyncResult() - for i in range(min(len(self.peers), limit, threads)): - publisher = gevent.spawn(self.publisher, inner_path, peers, published, limit, event_done) + for i in range(min(len(peers), limit, threads)): + publisher = gevent.spawn(self.publisher, inner_path, peers, published, limit, event_done, diffs) publishers.append(publisher) event_done.get() # Wait for done diff --git a/src/Ui/UiWebsocket.py b/src/Ui/UiWebsocket.py index fb60b646..401d43f0 100644 --- a/src/Ui/UiWebsocket.py +++ b/src/Ui/UiWebsocket.py @@ -318,9 +318,10 @@ class UiWebsocket(object): self.site.saveSettings() self.site.announce() + diffs = self.site.content_manager.getDiffs(inner_path) event_name = "publish %s %s" % (self.site.address, inner_path) called_instantly = RateLimit.isAllowed(event_name, 30) - thread = RateLimit.callAsync(event_name, 30, self.site.publish, 5, inner_path) # Only publish once in 30 seconds to 5 peer + thread = RateLimit.callAsync(event_name, 30, self.site.publish, 5, inner_path, diffs=diffs) # Only publish once in 30 seconds to 5 peer notification = "linked" not in dir(thread) # Only display notification on first callback thread.linked = True if called_instantly: # Allowed to call instantly