2011-05-02 123 views
3

我正在寻找一种方式创建用户时在App Engine上触发事件。我有类似的东西触发事件

def create_user(data): 
    user = new User(data) 
    user.put() 
    trigger('user_created', user) 
    return user 

这样,外部模块可能能够在创建新用户时修改实体。我想我可以添加像

add_hook('user_created', some_function) 

到外部模块(在应用程序初始化)。此功能会添加字段到实体,如

def some_function(user): 
    user.data = 'some value' 

什么是在应用程序引擎上完成此操作的最佳方法?

+0

这个[问题](http://stackoverflow.com/questions/2752601/override-save-put-get-etc-methods-in-google-app-engine)和[博客文章(HTTP:// blog.notdot.net/2010/04/Pre--and-post--put-hooks-for-Datastore-models)可能是有用的 – 2011-05-03 11:36:21

回答

1

一般来说,这是你将与the task queue处理。当你创建一个新用户时,发起一批任务来做后续工作是适当的。您可以在其他位置定义任务列表,并覆盖用户模型的put()方法以排列它们。

这是一种在模型中执行一个钩。如果您需要在数据存储区执行挂钩,则可以尝试新的Prospective Search API。我还没有尝试过,但根据the docs,你可以指定一个模型,查询,并创建查询相匹配的新的实体时,将被称为任务处理的URL。

+0

该用户实体是JSON序列化和之后的附加字段被添加到返回到客户端它(通过外部模块),因此无法在后台使用任务队列完成。也许预期搜索可能会有帮助,但我需要匹配添加到数据存储的任何用户实体。它可以更简单吗? – guigouz 2011-05-03 00:14:23