Make file based Storage thread safe.

This commit is contained in:
Joe Gregorio
2011-02-22 11:09:24 -05:00
parent d433b2a89e
commit 560b532469
2 changed files with 12 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ Utilities for making it easier to work with OAuth 1.0 credentials.
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
import pickle
import threading
from apiclient.oauth import Storage as BaseStorage
@@ -17,6 +18,7 @@ class Storage(BaseStorage):
def __init__(self, filename):
self._filename = filename
self._lock = threading.Lock()
def get(self):
"""Retrieve Credential from file.
@@ -24,6 +26,7 @@ class Storage(BaseStorage):
Returns:
apiclient.oauth.Credentials
"""
self._lock.acquire()
try:
f = open(self._filename, 'r')
credentials = pickle.loads(f.read())
@@ -31,6 +34,7 @@ class Storage(BaseStorage):
credentials.set_store(self.put)
except:
credentials = None
self._lock.release()
return credentials
@@ -40,6 +44,8 @@ class Storage(BaseStorage):
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()

View File

@@ -9,6 +9,7 @@ credentials.
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
import pickle
import threading
from client import Storage as BaseStorage
@@ -18,6 +19,7 @@ class Storage(BaseStorage):
def __init__(self, filename):
self._filename = filename
self._lock = threading.Lock()
def get(self):
"""Retrieve Credential from file.
@@ -25,6 +27,7 @@ class Storage(BaseStorage):
Returns:
oauth2client.client.Credentials
"""
self._lock.acquire()
try:
f = open(self._filename, 'r')
credentials = pickle.loads(f.read())
@@ -32,6 +35,7 @@ class Storage(BaseStorage):
credentials.set_store(self.put)
except:
credentials = None
self._lock.release()
return credentials
@@ -41,6 +45,8 @@ class Storage(BaseStorage):
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()