汇总 Feed 中丢失的活动



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

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

例如

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 上测试了我的聚合器类实现。聚合和合并函数的输出包含所有活动。

请帮忙!!

请注意,平面 Feed 的条目正确无误,缺少的条目仅在汇总 Feed 中。

我已经找到了解决方案。我将AggregatedActivity serialization_id方法重写为-

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

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

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

相关内容

  • 没有找到相关文章

最新更新