首先是我想要实现的一点点。我在流框架库之上构建了一个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中。
答案 0 :(得分:1)
我找到了解决方案。我将serialization_id
的{{1}}方法重写为 -
AggregatedActivity
答案 1 :(得分:0)
如果查看框架的AggregatedActivity
类,您会注意到活动的唯一标识符serialization_id
是基于纪元的秒数计算的。这意味着将在一秒钟内执行的活动将被覆盖。
您可以通过重新定义serialization_id
来解决此问题
来自纪元的serialization_id
= 毫秒的数量
这应该可以正常工作。