mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-21 04:42:46 +00:00
clear delay when restarting and reloading
This commit is contained in:
parent
c4c6d44987
commit
1f00ce570b
@ -58,7 +58,7 @@ class MirrorConfig(object):
|
||||
else:
|
||||
return self.__dict__["options"].get(key, None)
|
||||
|
||||
def to_provider(self, hooks=[]):
|
||||
def to_provider(self, hooks=[], no_delay=False):
|
||||
if self.provider == "rsync":
|
||||
provider = RsyncProvider(
|
||||
name=self.name,
|
||||
@ -84,15 +84,17 @@ class MirrorConfig(object):
|
||||
hooks=hooks
|
||||
)
|
||||
|
||||
sm = self._parent.status_manager
|
||||
last_update = sm.get_info(self.name, 'last_update')
|
||||
if last_update not in (None, '-'):
|
||||
last_update = datetime.strptime(last_update, '%Y-%m-%d %H:%M:%S')
|
||||
delay = int(last_update.strftime("%s")) \
|
||||
+ self.interval * 60 - int(datetime.now().strftime("%s"))
|
||||
if delay < 0:
|
||||
delay = 0
|
||||
provider.set_delay(delay)
|
||||
if not no_delay:
|
||||
sm = self._parent.status_manager
|
||||
last_update = sm.get_info(self.name, 'last_update')
|
||||
if last_update not in (None, '-'):
|
||||
last_update = datetime.strptime(last_update,
|
||||
'%Y-%m-%d %H:%M:%S')
|
||||
delay = int(last_update.strftime("%s")) \
|
||||
+ self.interval * 60 - int(datetime.now().strftime("%s"))
|
||||
if delay < 0:
|
||||
delay = 0
|
||||
provider.set_delay(delay)
|
||||
|
||||
return provider
|
||||
|
||||
|
@ -116,9 +116,11 @@ class TUNASync(object):
|
||||
p = Process(
|
||||
target=jobs.run_job,
|
||||
args=(self.semaphore, child_queue, self.channel, provider, ),
|
||||
kwargs={'max_retry': self._settings['global']['max_retry']}
|
||||
kwargs={
|
||||
'max_retry': self._settings['global']['max_retry']}
|
||||
)
|
||||
p.start()
|
||||
provider.set_delay(0) # clear delay after first start
|
||||
self.processes[name] = (child_queue, p)
|
||||
|
||||
def reload_mirrors(self, signum, frame):
|
||||
@ -150,7 +152,7 @@ class TUNASync(object):
|
||||
self._mirrors[name] = newMirCfg
|
||||
|
||||
hooks = newMirCfg.hooks() + self.hooks()
|
||||
newProvider = newMirCfg.to_provider(hooks)
|
||||
newProvider = newMirCfg.to_provider(hooks, no_delay=True)
|
||||
self._providers[name] = newProvider
|
||||
|
||||
if name in self.processes:
|
||||
@ -197,6 +199,7 @@ class TUNASync(object):
|
||||
if cmd == "restart":
|
||||
_, p = self.processes[name]
|
||||
p.terminate()
|
||||
self.provides[name].set_delay(0)
|
||||
self.run_provider(name)
|
||||
res = "Restarted Job: {}".format(name)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user