Skip to content

Commit

Permalink
fix: make ThreadPoolExecutor a class var (#461)
Browse files Browse the repository at this point in the history
  • Loading branch information
busunkim96 committed Mar 19, 2020
1 parent dafb41f commit b526473
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions google/auth/transport/grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,22 @@ class AuthMetadataPlugin(grpc.AuthMetadataPlugin):
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
# because this class is the same name as the superclass.
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.
Expand Down Expand Up @@ -89,12 +97,9 @@ def __call__(self, context, callback):
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,
Expand Down

0 comments on commit b526473

Please sign in to comment.