聚合Feed中丢失的活动

时间:2016-02-10 08:08:40

标签: stream-framework

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

错误:生成的汇总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上测试了我的聚合器类实现。 aggregate和merge函数的输出包含所有活动。

请帮助!!

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

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我将serialization_id的{​​{1}}方法重写为 -

AggregatedActivity

答案 1 :(得分:0)

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

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