1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-08 07:26:47 +00:00

clear delay when restarting and reloading

这个提交包含在:
bigeagle
2014-12-08 16:09:03 +08:00
父节点 c4c6d44987
当前提交 1f00ce570b
共有 2 个文件被更改,包括 17 次插入12 次删除

查看文件

@@ -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)