Start local peer discovery async to avoid double announce

This commit is contained in:
shortcutme 2018-08-26 02:46:12 +02:00
parent 27f2c44532
commit b7a66295f6
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -12,10 +12,15 @@ class SiteAnnouncerPlugin(object):
def announce(self, force=False, *args, **kwargs): def announce(self, force=False, *args, **kwargs):
local_announcer = self.site.connection_server.local_announcer local_announcer = self.site.connection_server.local_announcer
thread = None
if local_announcer and (force or time.time() - local_announcer.last_discover > 5 * 60): if local_announcer and (force or time.time() - local_announcer.last_discover > 5 * 60):
local_announcer.discover(force=force) thread = gevent.spawn(local_announcer.discover, force=force)
back = super(SiteAnnouncerPlugin, self).announce(force=force, *args, **kwargs)
return super(SiteAnnouncerPlugin, self).announce(force=force, *args, **kwargs) if thread:
thread.join()
return back
class LocalAnnouncer(BroadcastServer.BroadcastServer): class LocalAnnouncer(BroadcastServer.BroadcastServer):