Облако NDB пространство имен на запрос - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь перенести наш код в 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)

Я мог бы перенести создание клиента в промежуточное ПО, но я читал, что это создает много накладных расходов, которых мы хотим избежать. Разве пространство имен не должно быть свойством контекста, а не клиента?

...