status hook fixed

This commit is contained in:
bigeagle 2014-10-20 22:51:38 +08:00
parent 732f27ff8f
commit 3edc83044e
2 changed files with 37 additions and 11 deletions

View File

@ -15,27 +15,54 @@ class IndexPageHook(JobHook):
self.parent = parent self.parent = parent
self.dbfile = dbfile self.dbfile = dbfile
self.mirrors = {} @property
def mirrors(self):
mirrors = {}
try: try:
with open(self.dbfile) as f: with open(self.dbfile) as f:
_mirrors = json.load(f) _mirrors = json.load(f)
for m in _mirrors: for m in _mirrors:
self.mirrors[m["name"]] = m mirrors[m["name"]] = m
except: except:
for name, _ in self.parent.mirrors.iteritems(): for name, _ in self.parent.mirrors.iteritems():
self.mirrors[name] = { mirrors[name] = {
'name': name, 'name': name,
'last_update': '-', 'last_update': '-',
'status': 'unknown', 'status': 'unknown',
} }
return mirrors
def before_job(self, *args, **kwargs): def before_job(self, name=None, *args, **kwargs):
pass if name is None:
return
mirrors = self.mirrors
_m = mirrors.get(name, {
'name': name,
'last_update': '-',
'status': '-',
})
mirrors[name] = {
'name': name,
'last_update': _m['last_update'],
'status': 'syncing'
}
with open(self.dbfile, 'wb') as f:
_mirrors = sorted(
[m for _, m in mirrors.items()],
key=lambda x: x['name']
)
json.dump(_mirrors, f)
def after_job(self, name=None, status="unknown", *args, **kwargs):
if name is None:
return
def after_job(self, name='unknown', status="unknown", *args, **kwargs):
print("Updating tunasync.json") print("Updating tunasync.json")
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.mirrors[name] = { mirrors = self.mirrors
mirrors[name] = {
'name': name, 'name': name,
'last_update': now, 'last_update': now,
'status': status 'status': status
@ -43,7 +70,7 @@ class IndexPageHook(JobHook):
with open(self.dbfile, 'wb') as f: with open(self.dbfile, 'wb') as f:
_mirrors = sorted( _mirrors = sorted(
[m for _, m in self.mirrors.items()], [m for _, m in mirrors.items()],
key=lambda x: x['name'] key=lambda x: x['name']
) )

View File

@ -27,16 +27,15 @@ def run_job(sema, child_q, manager_q, provider):
print("start syncing {}".format(provider.name)) print("start syncing {}".format(provider.name))
for hook in provider.hooks: for hook in provider.hooks:
hook.before_job() hook.before_job(name=provider.name)
provider.run() provider.run()
status = "success"
try: try:
provider.wait() provider.wait()
except sh.ErrorReturnCode: except sh.ErrorReturnCode:
status = "fail" status = "fail"
else:
status = "success"
for hook in provider.hooks[::-1]: for hook in provider.hooks[::-1]:
try: try: