fixed a major problem with locking in languages, thanks Dan McGee fr the help
This commit is contained in:
+6
-9
@@ -172,25 +172,22 @@ class StorageList(Storage):
|
||||
return self[key]
|
||||
|
||||
def load_storage(filename):
|
||||
fp = open(filename, 'rb')
|
||||
fp = None
|
||||
try:
|
||||
portalocker.lock(fp, portalocker.LOCK_EX)
|
||||
fp = portalocker.LockFile(filename, 'rb')
|
||||
storage = cPickle.load(fp)
|
||||
portalocker.unlock(fp)
|
||||
finally:
|
||||
fp.close()
|
||||
if fp: fp.close()
|
||||
return Storage(storage)
|
||||
|
||||
|
||||
def save_storage(storage, filename):
|
||||
fp = open(filename, 'wb')
|
||||
fp = None
|
||||
try:
|
||||
portalocker.lock(fp, portalocker.LOCK_EX)
|
||||
fp = portalocker.LockFile(filename, 'wb')
|
||||
cPickle.dump(dict(storage), fp)
|
||||
portalocker.unlock(fp)
|
||||
finally:
|
||||
fp.close()
|
||||
|
||||
if fp: fp.close()
|
||||
|
||||
class Settings(Storage):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user