gpt4 book ai didi

python - App Engine (Python) 数据存储预调用 API Hook

转载 作者:太空狗 更新时间:2023-10-30 01:10:34 24 4
gpt4 key购买 nike

背景

假设我正在为 GAE 制作应用程序,我想使用 API Hooks .

大修改:在这个问题的原始版本中,我描述了我的用例,但一些人正确地指出它并不真正适合 API Hooks。的确!考虑我的帮助。但现在我的问题是学术性的:我仍然不知道如何在实践中使用钩子(Hook),但我很想这样做。我重写了我的问题,使其更加通用。


代码

所以我做了一个这样的模型:

class Model(db.Model):
user = db.UserProperty(required=True)
def pre_put(self):
# Sets a value, raises an exception, whatever. Use your imagination

然后我创建一个 db_hooks.py:

from google.appengine.api import apiproxy_stub_map

def patch_appengine():
def hook(service, call, request, response):
assert service == 'datastore_v3'
if call == 'Put':
for entity in request.entity_list():
entity.pre_put()

apiproxy_stub_map.apiproxy.GetPreCallHooks().Append('preput',
hook,
'datastore_v3')

被 TDD 困扰,我正在使用 GAEUnit 来做这一切,所以在 gaeunit.py 中,就在 main 方法的上方,我添加:

import db_hooks
db_hooks.patch_appengine()

然后我编写了一个实例化并放置模型的测试。


问题

虽然 patch_appengine() 肯定会被调用,但钩子(Hook)永远不会被调用。我错过了什么?如何让 pre_put 函数真正被调用?

最佳答案

Hook 对于手头的任务来说有点低级。您可能想要的是自定义属性类。派生属性,来自 aetycoon , 就是门票。

但是请记住,用户对象的“昵称”字段可能不是您想要的 - 根据 the docs ,如果他们使用的是 gmail 帐户,则它只是电子邮件字段的用户部分,否则就是他们的完整电子邮件地址。您可能想让用户设置自己的昵称。

关于python - App Engine (Python) 数据存储预调用 API Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351752/

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