2012-12-17 39 views
0

因此...使用Google App Engine用戶服務。GAE用戶服務對象 - 局部變量的創建與否?

我應該創建一個本地用戶對象:

my_user = users.get_current_user() 
if not my_user: 
    self.redirect(users.create_login_url(self.request.uri), abort=True) 
    return 
person = Person.get_current(my_user.user_id()) #Here 

,或從用戶的服務隨時隨地訪問用戶對象? :

my_user = users.get_current_user() 
if not my_user: 
    self.redirect(users.create_login_url(self.request.uri), abort=True) 
    return 
#... code ... 
person = Person.get_current(users.get_current_user().user_id()) #And here 

還是別的什麼? :

helping useres :-) 

當然,爲什麼。用戶使用服務的資源是否昂貴?

+0

對不起編輯...忘了替換 –

回答

1

本地範圍的用戶對象應該對每個請求都適用。

確保my_user是您的本地線程和當前請求:

  • ,如果是單獨的請求之間共享,也不能保證它確實是發出請求相同的用戶,除非你有一些單獨的會話驗證。

  • 不同的線程可以處理不同的請求,在這種情況下你會遇到上述問題。

+0

感謝您的信息。在我害怕之前,如果my_user在def get()中的請求處理程序中,那麼是否有可能成爲全局可訪問?我可能會在這裏錯過一些東西。我認爲每個請求處理程序都有自己的線程。 –

+0

每個請求都有自己的線程。如果my_user在def get()中,那麼你很好。如果它在外部和全球,你可能會遇到問題。 – dragonx

+0

當然沒有用途不是全球性的。我永遠不會那樣做,它只會真正受到壓力測試。 –

1

作爲觸發許多方法調用的調用,本地調用總是更好。效率增益取決於您的代碼調用它的頻率。對於2個電話它沒關係。