首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个请求的云ndb命名空间

每个请求的云ndb命名空间
EN

Stack Overflow用户
提问于 2020-04-09 18:31:55
回答 1查看 87关注 0票数 0

我正在尝试将我们的代码迁移到Cloud NDB。我们为每个客户提供了单独的名称空间。

如何安全地为每个请求切换命名空间?

我已经在migration documentation上实现了类似于示例的Flask中间件

命名空间是客户端的属性。因此,当请求进入时,我从accesstoken中确定电子邮件,并确定该用户属于哪个名称空间。然后我更改了客户端的名称空间。

恐怕这个client.namespace属性不是线程安全的,而且我不想让用户看到彼此的数据。

代码语言:javascript
运行
复制
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)

我可以将客户端的创建转移到中间件中,但我已经了解到这会产生许多我们想要避免的开销。命名空间不应该是上下文的属性而不是客户端的属性吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-15 20:00:30

此问题已在python-ndb库https://github.com/googleapis/python-ndb/pull/388中修复

nampespace属性已经移动到上下文级别,所以我现在可以根据请求更改它。该问题已在版本1.2.0中修复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61119154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档