From 8eb6251e5832ed8dd0da85dc5533050d3a25a85d Mon Sep 17 00:00:00 2001 From: Chris Rossi Date: Fri, 20 Mar 2020 14:46:44 -0400 Subject: [PATCH] fix: call `gc.collect()` when exiting the NDB runtime context This works around an issue where a thread started by `google.auth` confuses the Google App Engine Python 2.7 runtime. Fixes #336 --- google/cloud/ndb/client.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/google/cloud/ndb/client.py b/google/cloud/ndb/client.py index fa9ad890..3323a96f 100644 --- a/google/cloud/ndb/client.py +++ b/google/cloud/ndb/client.py @@ -15,6 +15,7 @@ """A client for NDB which manages credentials, project, namespace.""" import contextlib +import gc import grpc import os import requests @@ -200,6 +201,11 @@ def context( # Finish up any work left to do on the event loop context.eventloop.run() + # Work around bug where thread started by `google.auth` angers the + # Google App Engine Python 2.7 Runtime. See issue #336. + # https://github.com/googleapis/python-ndb/issues/336 + gc.collect() + @property def _http(self): """Getter for object used for HTTP transport.