2

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

错误:生成的聚合提要不包含所有活动,而平面提要包含所有活动。用例是 - 有 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 上测试了我的聚合器类实现。聚合和合并函数的输出包含所有活动。

请帮忙 !!

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

4

2 回答 2

1

我找到了解决方案。我重写了as 的serialization_id方法AggregatedActivity-

def serialization_id(self):
    milliseconds = str(int(datetime_to_epoch(self.updated_at)* 1000))
    return milliseconds
于 2016-07-04T09:47:57.677 回答
0

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

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

于 2016-07-04T08:00:01.423 回答