You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
flyapps/fir_ser/xsign/utils/ctasks.py

70 lines
2.8 KiB

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# project: 4月
# author: liuyu
# date: 2020/4/7
import logging
import os
import random
import time
from concurrent.futures import ThreadPoolExecutor
from django.template import loader
from common.core.sysconfig import Config
from fir_ser.settings import SUPER_SIGN_ROOT, SYNC_CACHE_TO_DATABASE
from xsign.models import UserInfo, AppIOSDeveloperInfo
from xsign.utils.supersignutils import IosUtils
from xsign.utils.utils import send_ios_developer_active_status
logger = logging.getLogger(__name__)
def auto_delete_ios_mobile_tmp_file():
mobile_config_tmp_dir = os.path.join(SUPER_SIGN_ROOT, 'tmp', 'mobile_config')
for root, dirs, files in os.walk(mobile_config_tmp_dir, topdown=False):
now_time = time.time()
for name in files:
file_path = os.path.join(root, name)
st_mtime = os.stat(file_path).st_mtime
if now_time - st_mtime > SYNC_CACHE_TO_DATABASE.get('clean_local_tmp_file_from_mtime', 30 * 60):
try:
os.remove(file_path)
except Exception as e:
logger.error(f"auto_delete_tmp_file {file_path} Failed . Exception {e}")
def auto_check_ios_developer_active():
error_issuer_id = {}
def check_active_task(developer_obj):
time.sleep(random.randint(1, 5))
user_obj = developer_obj.user_id
err_issuer_id = error_issuer_id.get(user_obj.uid, [])
if user_obj.supersign_active:
status, result = IosUtils.active_developer(developer_obj, False)
msg = f"auto_check_ios_developer_active user:{user_obj} ios.developer:{developer_obj} status:{status} result:{result}"
err_issuer_id.append(developer_obj)
error_issuer_id[user_obj.uid] = list(set(err_issuer_id))
if status:
IosUtils.get_device_from_developer(developer_obj)
logger.info(msg)
else:
logger.error(msg)
ios_developer_queryset = AppIOSDeveloperInfo.objects.filter(status__in=Config.DEVELOPER_AUTO_CHECK_STATUS,
auto_check=True, user_id__is_active=True,
user_id__supersign_active=True)
pools = ThreadPoolExecutor(10)
for ios_developer_obj in ios_developer_queryset:
pools.submit(check_active_task, ios_developer_obj)
pools.shutdown()
for uid, developer_obj_list in error_issuer_id.items():
userinfo = UserInfo.objects.filter(uid=uid).first()
content = loader.render_to_string('check_developer.html',
{'username': userinfo.first_name, 'developer_obj_list': developer_obj_list})
send_ios_developer_active_status(userinfo, content)