У меня возникают задержки при выполнении запросов к API администратора Google.
def get_user(self, email: str) -> dict:
res = (
self.service.users()
.list(
domain="gmail.com",
projection="full",
query="email={0}".format(email),
)
.execute()
)
if "users" not in res or len(res["users"]) != 1:
msg = "Could not find user %s" % email
logging.error(msg)
raise GoogleAdminNonExistentUser(msg)
return res["users"][0]
def create_user(
self,
email: str,
first_name: str,
last_name: str,
org_unit_path: str,
manager_email: str,
) -> dict:
user_info = {...}
try:
res = self.service.users().insert(body=user_info).execute()
return res
except HttpError as error:
exc = self._generate_error(error)
logger.exception(exc.message)
raise exc
Возьмем, к примеру, эти два вызова.В моем наборе тестов я делаю тест для создания пользователя и немедленного его удаления.В следующем тесте я создаю того же пользователя и обновляю пользовательские атрибуты.Затем я проверяю, что эти атрибуты были установлены.
test_create_delete()
create_user(EMAIL)
delete_user(EMAIL)
test_create_update()
create_user(EMAIL) # This will variably error out if the delete_user from the last request hasn't replicated throughout Google
update_user(EMAIL, UPDATE_INFO)
user = get_user()
# This assertion will variably fail if get_user() fetches old data
assert the update info is in user
Я мог бы засорять тесты засыпанием, но время сборки важно.Есть ли способ заставить API администратора Google возвращать самые свежие данные?