# -*- 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 FaultRecord def remove_fault_record(): _cls = FaultRecord oneMonthAgo = datetime.datetime.now() - datetime.timedelta(days = 30) 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( {'createdTime': {'$lt': oneMonthAgo}}, {'_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_fault_record()