| 123456789101112131415161718192021222324252627282930313233 |
- import atexit
- import os
- import threading
- lockfiles = []
- def init_task(fn, period, lockfile='/opt/stackbrew/brw.lock', logger=None):
- def periodic(logger):
- if logger is not None:
- logger.info('Periodic task started')
- t = threading.Timer(period, periodic, [logger])
- t.daemon = True
- t.start()
- fn()
- if os.path.exists(lockfile):
- raise RuntimeError('Lockfile already present.')
- open(lockfile, 'w').close()
- lockfiles.append(lockfile)
- t = threading.Timer(0, periodic, [logger])
- t.daemon = True
- t.start()
- def clear_lockfiles(lockfiles):
- for lock in lockfiles:
- os.remove(lock)
- def on_exit(lockfiles):
- clear_lockfiles(lockfiles)
- atexit.register(on_exit, lockfiles)
|