聚合提要中丢失的活动
Lost activities in Aggregated Feed
首先介绍一下我想要实现的目标。我在流框架库之上构建了一个 django 包装器。有 2 个 feed-classes - FlatFeed(RedisFeed)
和 AggregatedFeed(RedisAggregatedFeed)
。显然,这些都是使用 Redis 来存储提要数据。我还实现了自己的聚合器 class.
错误:生成的聚合提要不包含所有活动,而平面提要包含所有活动。用例是 - 有 3 个用户 A、B 和 C。B 和 C 执行一些活动,然后用户 A 跟随 B 和 C。用户 B 和 C 继续执行更多活动。 A 的平面 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 上测试了我的聚合器 class 实现。聚合和合并函数的输出包含所有活动。
请帮忙!!
请注意,平面 Feed 包含正确的条目,缺失的条目仅出现在汇总的 Feed 中。
如果您查看框架的 AggregatedActivity
class,您会注意到 serialization_id
也就是 activity 的唯一标识符是根据从纪元开始的秒数。这意味着在一秒内执行的活动将被覆盖。
您可以通过重新定义 serialization_id
.
来解决这个问题
serialization_id
= 从纪元开始的 毫秒 数。
这应该可以正常工作。
我找到了解决办法。我将 AggregatedActivity
的 serialization_id
方法重写为 -
def serialization_id(self):
milliseconds = str(int(datetime_to_epoch(self.updated_at)* 1000))
return milliseconds
首先介绍一下我想要实现的目标。我在流框架库之上构建了一个 django 包装器。有 2 个 feed-classes - FlatFeed(RedisFeed)
和 AggregatedFeed(RedisAggregatedFeed)
。显然,这些都是使用 Redis 来存储提要数据。我还实现了自己的聚合器 class.
错误:生成的聚合提要不包含所有活动,而平面提要包含所有活动。用例是 - 有 3 个用户 A、B 和 C。B 和 C 执行一些活动,然后用户 A 跟随 B 和 C。用户 B 和 C 继续执行更多活动。 A 的平面 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 上测试了我的聚合器 class 实现。聚合和合并函数的输出包含所有活动。
请帮忙!!
请注意,平面 Feed 包含正确的条目,缺失的条目仅出现在汇总的 Feed 中。
如果您查看框架的 AggregatedActivity
class,您会注意到 serialization_id
也就是 activity 的唯一标识符是根据从纪元开始的秒数。这意味着在一秒内执行的活动将被覆盖。
您可以通过重新定义 serialization_id
.
来解决这个问题
serialization_id
= 从纪元开始的 毫秒 数。
这应该可以正常工作。
我找到了解决办法。我将 AggregatedActivity
的 serialization_id
方法重写为 -
def serialization_id(self):
milliseconds = str(int(datetime_to_epoch(self.updated_at)* 1000))
return milliseconds