gpt4 book ai didi

google-app-engine - 启用内存缓存后,NDB 不会为异步获取返回相同的实例

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:46 26 4
gpt4 key购买 nike

我的程序依赖于 NDB 上下文缓存,因此不同的 ndb.Key.get() 调用将接收相同的模型实例。

但是,我发现这不适用于异步获取。预期的行为是 NDB 的批处理程序组合请求并返回相同的模型实例,但这并没有发生。

该问题仅在启用 memcache 时出现,这也很奇怪。

这是一个测试用例(运行两次):

class Entity(ndb.Model):
pass

# Disabling memcache fixes the issue
# Entity._use_memcache = False

entity_key = ndb.Key('Entity', 1)

# Set up entity in datastore and memcache on first run
if not entity_key.get():
entity = Entity(key=entity_key)
entity.put()

return

# Clear cache after Key.get() above
ndb.get_context().clear_cache()

# Entity is now in memcache and datastore but not context

entity_future_a = entity_key.get_async()
entity_future_b = entity_key.get_async()

entity_a = entity_future_a.get_result()
entity_b = entity_future_b.get_result()

# FAILS
assert entity_a is entity_b

到目前为止,我只在本地 SDK 上测试过。

最佳答案

发生这种情况的原因可能是您没有在其中调用 yield。能否尝试设置环境,以便您可以使用

entity_a, entity_b = yield entity_future_a, entity_b_future

?

关于google-app-engine - 启用内存缓存后,NDB 不会为异步获取返回相同的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com