0

下面的代碼顯示了我通常在python程序中執行的操作。在谷歌應用引擎中使用@property和ndb數據存儲

class LogOnline(ndb.Model): 
    _timeOnline = ndb.DateTimeProperty(default=None) 

    @property 
    def timeOnline(self): 
     return self._timeOnline 

    @timeOnline.setter 
    def timeOnline(self, dateTime): 
     self._timeOnline = dateTime 
     #set memcache with all current online users 
     #..... 

但是這個代碼不工作的應用程序引擎不允許性能開始與「_」 另外我覺得這種類型的結構可能是不好的做法,因爲這樣做查詢的時候它可以提供問題類。

解決此問題的最佳方法是什麼?

回答

1

你可以做什麼,是make timeOnline屬性沒有下劃線,但添加_post_put_hook來更新內存緩存。

class LogOnline(ndb.Model): 
    timeOnline = ndb.DateTimeProperty(default=None) 

    def _post_put_hook(self, future): 
     future.get_result() #wait untill the PUT operation has completed 
     #set memcache with all current online users 
     ... 
+0

感謝這正是我正在尋找的,最終使用_pre_put_hook(self)。 –

+0

爲什麼?我不知道你的確切用例,但是在_post_put_hook中,你可以根據天氣情況做出決定。 – bigblind

相關問題