1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # -*- 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.constant import Const
- from apps.web.user.models import ServiceProgress
- def remove_serviceProgress_periodically():
- threeDaysAgo = datetime.datetime.now() - datetime.timedelta(days = 3)
- threeDaysAgo = int(time.mktime(threeDaysAgo.timetuple()))
- threeMonthAgo = datetime.datetime.now() - datetime.timedelta(days = 91)
- threeMonthAgo = int(time.mktime(threeMonthAgo.timetuple()))
- 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 = ServiceProgress.get_collection().find(
- {
- '$or': [{'finished_time': {'$lt': threeDaysAgo}}, {'isFinished': True}],
- 'devTypeCode': {
- '$ne': Const.DEVICE_TYPE_CODE_HP_GATE
- }}, {'_id': 1}).limit(2000)
- bulker = BulkHandlerEx(ServiceProgress.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(ServiceProgress.get_collection()) # type: BulkHandlerEx
- if count < 2000:
- break
- while True:
- now_time = int(time.time())
- if now_time - start_time > 2 * 60 * 60:
- logger.debug('time is over. wait next.')
- return
- items = ServiceProgress.get_collection().find(
- {
- '$or': [
- {'finished_time': {'$lt': threeMonthAgo}},
- {'isFinished': True}
- ],
- 'finished_time': {'$lt': threeDaysAgo},
- 'devTypeCode': Const.DEVICE_TYPE_CODE_HP_GATE
- }, {'_id': 1}).limit(2000)
- bulker = BulkHandlerEx(ServiceProgress.get_collection()) # type: BulkHandlerEx
- 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(ServiceProgress.get_collection()) # type: BulkHandlerEx
- if count < 2000:
- break
- logger.debug('delete all over.')
- remove_serviceProgress_periodically()
|