# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import os import sys import time os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'configs.production') PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) from script.base import init_env, get_logger init_env(interactive=False) logger = get_logger(__name__) from apilib.utils_mongo import BulkHandlerEx from apps.web.device.models import FeedBack def remove_feed_back(): _cls = FeedBack threeMonthAgo = (datetime.datetime.now() - datetime.timedelta(days=180)).strftime('%Y-%m-%d %H:%M:%S') start_time = int(time.time()) while True: now_time = int(time.time()) if now_time - start_time > 2 * 60 * 60: logger.debug('time is over. wait next.') return items = _cls.get_collection().find( {'createTime': {'$lt': threeMonthAgo}}, {'_id': 1}).limit(2000) bulker = BulkHandlerEx(_cls.get_collection()) for item in items: bulker.delete(query_dict={'_id': item['_id']}) count = len(bulker.requests) if count > 0: logger.debug('prepare to delete {} rows.'.format(count)) bulker.execute() # bulker = BulkHandlerEx(_cls.get_collection()) # type: BulkHandlerEx if count < 2000: break logger.debug('delete all over.') remove_feed_back()