periodic.py 668 B

1234567891011121314151617181920212223242526
  1. #import atexit
  2. import os
  3. import threading
  4. lockfiles = []
  5. def init_task(fn, period, lockfile='/opt/stackbrew/brw.lock', logger=None):
  6. def periodic(logger):
  7. if logger is not None:
  8. logger.info('Periodic task started')
  9. threading.Timer(period, periodic, [logger]).start()
  10. fn()
  11. if os.path.exists(lockfile):
  12. raise RuntimeError('Lockfile already present.')
  13. open(lockfile, 'w').close()
  14. lockfiles.append(lockfile)
  15. threading.Timer(0, periodic, [logger]).start()
  16. def clear_lockfiles(lockfiles):
  17. for lock in lockfiles:
  18. os.remove(lock)
  19. lockfiles = []
  20. #atexit.register(clear_lockfiles, lockfiles)