【问题标题】:Lost activities in Aggregated Feed汇总 Feed 中的活动丢失
【发布时间】:2016-02-10 08:08:40
【问题描述】:

首先是我想要达到的目标。我在流框架库之上构建了一个 django 包装器。有 2 个提要类 - FlatFeed(RedisFeed)AggregatedFeed(RedisAggregatedFeed)。显然,这些都是使用 Redis 来存储提要数据。我还实现了自己的聚合器类。

错误:生成的聚合提要不包含所有活动,而平面提要包含所有活动。用例是 - 有 3 个用户 A、B 和 C。B 和 C 执行一些活动,然后用户 A 跟随 B 和 C。用户 B 和 C 继续执行更多活动。 A 的 Flat feed 包含 B 和 C 的所有活动,但 A 的聚合 feed 有一些丢失的活动。

例如,

B likes products 1, 2, 3, 4
C likes products 5, 6, 7, 8, 9, 10
A follows B
A follows C

flat_feed(A) 包含所有活动,但 aggregated_feed(A) 仅对 1、5 和 8 点赞。我多次重复此用例,每次只有这 3 个活动。

我已经在 django shell 上测试了我的聚合器类实现。聚合和合并函数的输出包含所有活动。

请帮忙!!

请注意,固定提要有正确的条目,缺少的条目仅在汇总提要中。

【问题讨论】:

    标签: stream-framework


    【解决方案1】:

    我找到了解决方案。我将AggregatedActivityserialization_id方法改写为-

    def serialization_id(self):
        milliseconds = str(int(datetime_to_epoch(self.updated_at)* 1000))
        return milliseconds
    

    【讨论】:

      【解决方案2】:

      如果您查看框架的AggregatedActivity 类,您会注意到serialization_id 又名活动的唯一标识符是根据从纪元开始的秒数计算的。这意味着在一秒钟内执行的活动将被覆盖。

      您可以通过重新定义 serialization_id 来解决此问题。
      serialization_id = 从纪元开始的 毫秒 数。
      这应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多