Я пытаюсь перенести наш код в Cloud NDB. У нас есть отдельные пространства имен для каждого из наших клиентов.
Как безопасно переключать пространство имен для каждого запроса?
Я внедрил промежуточное ПО Flask, как в примере в документации по миграции
Пространство имен является собственностью клиента. Поэтому, когда приходит запрос, я определяю адрес электронной почты из маркера доступа и определяю, к какому пространству имен принадлежит этот пользователь. И тогда я изменяю пространство имен клиента.
Боюсь, это свойство client.namespace не является поточно-ориентированным. И я не хочу, чтобы пользователи видели данные друг друга.
client = ndb.Client()
def ndb_wsgi_middleware(wsgi_app):
def middleware(environ, start_response):
with client.context():
return wsgi_app(environ, start_response)
return middleware
def switch_user(email):
client = context_module.get_context().client
client.namespace = determine_namespace(email)
Я мог бы перенести создание клиента в промежуточное ПО, но я читал, что это создает много накладных расходов, которых мы хотим избежать. Разве пространство имен не должно быть свойством контекста, а не клиента?