Changeset - d280aa1c85c6
[Not reviewed]
default
0 2 0
Marcin Kuzminski - 15 years ago 2010-09-25 20:17:56
marcin@python-works.com
removed pidlock from whoosh and added it as locked_task decorator
2 files changed with 6 insertions and 37 deletions:
0 comments (0 inline, 0 general)
pylons_app/lib/celerylib/tasks.py
Show inline comments
 
@@ -66,20 +66,11 @@ def get_hg_ui_settings():
 
    return settings   
 

	
 
@task
 
@locked_task
 
def whoosh_index(repo_location, full_index):
 
    log = whoosh_index.get_logger()
 
    from pylons_app.lib.pidlock import DaemonLock
 
    from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon, LockHeld
 
    try:
 
        l = DaemonLock()
 
        WhooshIndexingDaemon(repo_location=repo_location)\
 
            .run(full_index=full_index)
 
        l.release()
 
        return 'Done'
 
    except LockHeld:
 
        log.info('LockHeld')
 
        return 'LockHeld'    
 

	
 
    from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon
 
    WhooshIndexingDaemon(repo_location=repo_location).run(full_index=full_index)
 

	
 
@task
 
@locked_task
pylons_app/lib/pidlock.py
Show inline comments
 
@@ -9,7 +9,7 @@ class DaemonLock(object):
 
    """daemon locking
 
    USAGE:
 
    try:
 
        l = lock()
 
        l = DaemonLock(desc='test lock')
 
        main()
 
        l.release()
 
    except LockHeld:
 
@@ -40,8 +40,7 @@ class DaemonLock(object):
 

	
 

	
 
    def lock(self):
 
        """
 
        locking function, if lock is present it will raise LockHeld exception
 
        """locking function, if lock is present it will raise LockHeld exception
 
        """
 
        lockname = '%s' % (os.getpid())
 

	
 
@@ -75,8 +74,7 @@ class DaemonLock(object):
 

	
 

	
 
    def release(self):
 
        """
 
        releases the pid by removing the pidfile
 
        """releases the pid by removing the pidfile
 
        """
 
        if self.callbackfn:
 
            #execute callback function on release
 
@@ -105,23 +103,3 @@ class DaemonLock(object):
 
        pidfile.write(lockname)
 
        pidfile.close
 
        self.held = True
 

	
 

	
 
def main():
 
    print 'func is running'
 
    cnt = 20
 
    while 1:
 
        print cnt
 
        if cnt == 0:
 
            break
 
        time.sleep(1)
 
        cnt -= 1
 

	
 

	
 
if __name__ == "__main__":
 
    try:
 
        l = DaemonLock(desc='test lock')
 
        main()
 
        l.release()
 
    except LockHeld:
 
        sys.exit(1)
0 comments (0 inline, 0 general)