fix: make ThreadPoolExecutor a class var (#461)
diff --git a/google/auth/transport/grpc.py b/google/auth/transport/grpc.py
index ca38739..5ce6b2b 100644
--- a/google/auth/transport/grpc.py
+++ b/google/auth/transport/grpc.py
@@ -51,6 +51,15 @@
object used to refresh credentials as needed.
"""
+ # Python 2.7 has no default for max_workers.
+ # In Python >= 3.5, ThreadPoolExecutor defaults to the
+ # number of processors on the machine, multiplied by 5.
+ if six.PY2: # pragma: NO COVER
+ max_workers = 5
+ else:
+ max_workers = None
+ _AUTH_THREAD_POOL = futures.ThreadPoolExecutor(max_workers=max_workers)
+
def __init__(self, credentials, request):
# pylint: disable=no-value-for-parameter
# pylint doesn't realize that the super method takes no arguments
@@ -58,7 +67,6 @@
super(AuthMetadataPlugin, self).__init__()
self._credentials = credentials
self._request = request
- self._pool = futures.ThreadPoolExecutor(max_workers=1)
def _get_authorization_headers(self, context):
"""Gets the authorization headers for a request.
@@ -89,12 +97,9 @@
callback (grpc.AuthMetadataPluginCallback): The callback that will
be invoked to pass in the authorization metadata.
"""
- future = self._pool.submit(self._get_authorization_headers, context)
+ future = self._AUTH_THREAD_POOL.submit(self._get_authorization_headers, context)
future.add_done_callback(self._callback_wrapper(callback))
- def __del__(self):
- self._pool.shutdown(wait=False)
-
def secure_authorized_channel(
credentials,