From 3971bc230008a576b9afa9eda47147d88a584776 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 Nov 2005 18:35:19 +0000 Subject: add proper locking for archives git-svn-id: file:///home/lennart/svn/public/sse/trunk@44 5fbabb74-0606-0410-a5e4-b5cc6a42724e --- feed/sse_grab.py | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'feed/sse_grab.py') diff --git a/feed/sse_grab.py b/feed/sse_grab.py index 302c5a7..b1d11db 100644 --- a/feed/sse_grab.py +++ b/feed/sse_grab.py @@ -2,36 +2,42 @@ import sys, urllib2, os, socket -import sse_tar +import sse_tar, sse_lock from sse_defs import * from sse_config import * socket.setdefaulttimeout(SSE_SOCKET_TIMEOUT) def grab_archive(meta, recid, provider_id = SSE_PROVIDER_NONE): - + try: os.mkdir("%s/download" % HOME) except: pass fn = os.path.join(HOME, "download", recid) + lock_fn = fn + ".lock" - download = False + if not sse_lock.try_lock_file(lock_fn): + print "Skipping locked archive '%s'." % recid + return try: - f = open(fn+".release", "r") - except: - download = True - else: - download = f.read(SSE_BLOCK_SIZE) != meta["version"] - f.close() + download = False + + try: + f = open(fn+".release", "r") + except IOError: + download = True + else: + download = f.read(SSE_BLOCK_SIZE) != meta["version"] + f.close() - archive_url = meta["archive-url"] + archive_url = meta["archive-url"] - if not download: - print "File %s up-to-date." % archive_url - else: + if not download: + print "File %s up-to-date." % archive_url + return print "Downloading %s..." % archive_url @@ -73,7 +79,10 @@ def grab_archive(meta, recid, provider_id = SSE_PROVIDER_NONE): f = open(fn+".release", "w") except: os.unlink(fn) - + f.write(meta["version"]) f.close() + + finally: + sse_lock.unlock_file(lock_fn) -- cgit