def main(): usable_ids = warm_conn.keys('b:s:a*') usable_ids = map(lambda _id: int(_id.split(':')[-1]), usable_ids) articles = Article.objects(seq_id__in=usable_ids).only('seq_id', 'id', 'category', 'hot', 'quality', 'published_at', 'feature') update_time = datetime.datetime.utcnow() set_global_cal_time(update_time) seq_id_article_mapping = dict(((a.seq_id, (a, calculate_scores(0, 0, a.published_at, a.quality, a.hot, update_time, update_time))) for a in articles)) User.recompute_common_candidateset(usable_ids, seq_id_article_mapping) users = User.objects.only('id', 'seq_id', 'feature', 'recent_feature', 'feature_updated_time', 'candidate_updated_time').all() usable_ids_set = set(usable_ids) for user in users: ids, _ = user.get_seen_article_ids_and_last_datetime() _usable_ids = usable_ids_set - set(ids) print user, user.seq_id, len(_usable_ids) short_feature, long_feature, _ = user.update_warm_feature() User.recompute_candidateset(user, short_feature, long_feature, seq_id_article_mapping, subset=_usable_ids)