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:
|
else:
|
||||||
return self.__dict__["options"].get(key, None)
|
return self.__dict__["options"].get(key, None)
|
||||||
|
|
||||||
def to_provider(self, hooks=[]):
|
def to_provider(self, hooks=[], no_delay=False):
|
||||||
if self.provider == "rsync":
|
if self.provider == "rsync":
|
||||||
provider = RsyncProvider(
|
provider = RsyncProvider(
|
||||||
name=self.name,
|
name=self.name,
|
||||||
@ -84,15 +84,17 @@ class MirrorConfig(object):
|
|||||||
hooks=hooks
|
hooks=hooks
|
||||||
)
|
)
|
||||||
|
|
||||||
sm = self._parent.status_manager
|
if not no_delay:
|
||||||
last_update = sm.get_info(self.name, 'last_update')
|
sm = self._parent.status_manager
|
||||||
if last_update not in (None, '-'):
|
last_update = sm.get_info(self.name, 'last_update')
|
||||||
last_update = datetime.strptime(last_update, '%Y-%m-%d %H:%M:%S')
|
if last_update not in (None, '-'):
|
||||||
delay = int(last_update.strftime("%s")) \
|
last_update = datetime.strptime(last_update,
|
||||||
+ self.interval * 60 - int(datetime.now().strftime("%s"))
|
'%Y-%m-%d %H:%M:%S')
|
||||||
if delay < 0:
|
delay = int(last_update.strftime("%s")) \
|
||||||
delay = 0
|
+ self.interval * 60 - int(datetime.now().strftime("%s"))
|
||||||
provider.set_delay(delay)
|
if delay < 0:
|
||||||
|
delay = 0
|
||||||
|
provider.set_delay(delay)
|
||||||
|
|
||||||
return provider
|
return provider
|
||||||
|
|
||||||
|
@ -116,9 +116,11 @@ class TUNASync(object):
|
|||||||
p = Process(
|
p = Process(
|
||||||
target=jobs.run_job,
|
target=jobs.run_job,
|
||||||
args=(self.semaphore, child_queue, self.channel, provider, ),
|
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()
|
p.start()
|
||||||
|
provider.set_delay(0) # clear delay after first start
|
||||||
self.processes[name] = (child_queue, p)
|
self.processes[name] = (child_queue, p)
|
||||||
|
|
||||||
def reload_mirrors(self, signum, frame):
|
def reload_mirrors(self, signum, frame):
|
||||||
@ -150,7 +152,7 @@ class TUNASync(object):
|
|||||||
self._mirrors[name] = newMirCfg
|
self._mirrors[name] = newMirCfg
|
||||||
|
|
||||||
hooks = newMirCfg.hooks() + self.hooks()
|
hooks = newMirCfg.hooks() + self.hooks()
|
||||||
newProvider = newMirCfg.to_provider(hooks)
|
newProvider = newMirCfg.to_provider(hooks, no_delay=True)
|
||||||
self._providers[name] = newProvider
|
self._providers[name] = newProvider
|
||||||
|
|
||||||
if name in self.processes:
|
if name in self.processes:
|
||||||
@ -197,6 +199,7 @@ class TUNASync(object):
|
|||||||
if cmd == "restart":
|
if cmd == "restart":
|
||||||
_, p = self.processes[name]
|
_, p = self.processes[name]
|
||||||
p.terminate()
|
p.terminate()
|
||||||
|
self.provides[name].set_delay(0)
|
||||||
self.run_provider(name)
|
self.run_provider(name)
|
||||||
res = "Restarted Job: {}".format(name)
|
res = "Restarted Job: {}".format(name)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user