Make file based Storage thread safe.
diff --git a/oauth2client/file.py b/oauth2client/file.py
index 12dee91..b72e3c5 100644
--- a/oauth2client/file.py
+++ b/oauth2client/file.py
@@ -9,6 +9,7 @@
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
import pickle
+import threading
from client import Storage as BaseStorage
@@ -18,6 +19,7 @@
def __init__(self, filename):
self._filename = filename
+ self._lock = threading.Lock()
def get(self):
"""Retrieve Credential from file.
@@ -25,6 +27,7 @@
Returns:
oauth2client.client.Credentials
"""
+ self._lock.acquire()
try:
f = open(self._filename, 'r')
credentials = pickle.loads(f.read())
@@ -32,6 +35,7 @@
credentials.set_store(self.put)
except:
credentials = None
+ self._lock.release()
return credentials
@@ -41,6 +45,8 @@
Args:
credentials: Credentials, the credentials to store.
"""
+ self._lock.acquire()
f = open(self._filename, 'w')
f.write(pickle.dumps(credentials))
f.close()
+ self._lock.release()