diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-11-23 18:35:19 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-11-23 18:35:19 +0000 |
commit | 3971bc230008a576b9afa9eda47147d88a584776 (patch) | |
tree | 81ee529d872606b7279c9631b66eb133e0134ab5 /feed/sse_grab.py | |
parent | 3a24de286d8bb6a6fa5c802ad9587e15550f0801 (diff) |
add proper locking for archives
git-svn-id: file:///home/lennart/svn/public/sse/trunk@44 5fbabb74-0606-0410-a5e4-b5cc6a42724e
Diffstat (limited to 'feed/sse_grab.py')
-rw-r--r-- | feed/sse_grab.py | 37 |
1 files changed, 23 insertions, 14 deletions
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) |