def test_delete_by_retention(self): storys_0_30 = self.storys[:30] modified = Story.bulk_save_by_feed(self.feed_id, storys_0_30, batch_size=10) self.assertEqual(len(modified), 30) self.assert_feed_total_storys(30) self.assert_total_story_infos(0) storys_20_50 = self.storys[20:50] modified = STORY_SERVICE.bulk_save_by_feed(self.feed_id, storys_20_50, batch_size=10) self.assertEqual(len(modified), 20) self.assert_feed_total_storys(50) self.assert_total_story_infos(20) n = STORY_SERVICE.delete_by_retention(self.feed_id, retention=10, limit=10) self.assertEqual(n, 10) self.assert_feed_total_storys(50) self.assert_total_story_infos(20) n = STORY_SERVICE.delete_by_retention(self.feed_id, retention=10, limit=50) self.assertEqual(n, 30) self.assert_feed_total_storys(50) self.assert_total_story_infos(10)
def do_clean_by_retention(ctx: ActorContext): retention = CONFIG.feed_story_retention feeds = Feed.take_retention_feeds(retention=retention, limit=50) LOG.info('found {} feeds need clean by retention'.format(len(feeds))) for feed in feeds: feed_id = feed['feed_id'] url = feed['url'] n = STORY_SERVICE.delete_by_retention(feed_id, retention=retention) LOG.info(f'deleted {n} storys of feed#{feed_id} {url} by retention')