2011-05-02 122 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