【问题标题】:GAE NDB: Calculating and displaying entity's view count efficientlyGAE NDB:有效计算和显示实体的查看次数
【发布时间】:2014-06-11 08:00:56
【问题描述】:

我想在其模板上直接显示实体被查看的次数。例如,给定这个Book ndb.Model

class Book(ndb.Model):
    title = ndb.StringProperty()
    view_count = ndb.IntegerProperty(default = 0)

由这个处理:

class BookPage(MainHandler):
    def get(self, book_id):
        book = Book.get_by_id(int(book_id))
        self.render(book-page.html, book = book)

这里是 book-page.html:

<h2>{{book.title}} | {{book.view_count}}</h2>

一种方法是我们可以设置view_count = view_count + 1,然后设置book.put(),但这会涉及大量的数据库写入。

一定有更好的办法。

【问题讨论】:

    标签: google-app-engine python-2.7 jinja2 app-engine-ndb webapp2


    【解决方案1】:

    计数器信息是持久的,除了将其写入数据存储之外,您别无选择。

    为了更高效和快速的实施,我邀请您查看Sharding counters

    【讨论】:

    • 另请注意,在没有任何锁定保护的情况下简单地添加会导致您无法计算项目。事务/和/或内存缓存可用于避免这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多