diff options
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) |