summaryrefslogtreecommitdiffstats
path: root/feed/sse_grab.py
diff options
context:
space:
mode:
Diffstat (limited to 'feed/sse_grab.py')
-rw-r--r--feed/sse_grab.py37
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)