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/api/utils/crontab/ctasks.py

87 lines
3.7 KiB

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# project: 4月
# author: liuyu
# date: 2020/4/7
import logging
import os
import time
from django.core.cache import cache
from api.models import Apps, UserInfo, AppIOSDeveloperInfo
from api.utils.app.supersignutils import IosUtils
from api.utils.storage.storage import Storage
from api.utils.sysconfig import Config
from api.utils.utils import send_ios_developer_active_status
from fir_ser.settings import CACHE_KEY_TEMPLATE, SYNC_CACHE_TO_DATABASE, SUPER_SIGN_ROOT, DEVELOPER_AUTO_CHECK_STATUS
logger = logging.getLogger(__name__)
def sync_download_times():
down_tem_key = CACHE_KEY_TEMPLATE.get("download_times_key")
key = "_".join([down_tem_key, '*'])
for app_download in cache.iter_keys(key):
count_hits = cache.get(app_download)
if count_hits:
app_id = app_download.split(down_tem_key)[1].strip('_')
Apps.objects.filter(app_id=app_id).update(count_hits=count_hits)
logger.info(f"sync_download_times app_id:{app_id} count_hits:{count_hits}")
def auto_clean_upload_tmp_file():
upload_tem_key = CACHE_KEY_TEMPLATE.get("upload_file_tmp_name_key")
key = "_".join([upload_tem_key, '*'])
for upload_tem_file_key in cache.iter_keys(key):
data = cache.get(upload_tem_file_key)
if data:
u_time = data.get("u_time", None)
if u_time and time.time() - u_time > 60 * 20:
user_obj = UserInfo.objects.filter(pk=data.get("id")).first()
if user_obj:
storage = Storage(user_obj)
filename = data.get("filename", None)
if filename:
storage.delete_file(filename)
logger.info(f"auto_clean_upload_tmp_file delete_file :{filename}")
cache.delete(upload_tem_file_key)
logger.info(f"auto_clean_upload_tmp_file upload_tem_file_key :{upload_tem_file_key}")
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():
all_ios_developer = AppIOSDeveloperInfo.objects.filter(status__in=DEVELOPER_AUTO_CHECK_STATUS, auto_check=True)
error_issuer_id = {}
for ios_developer in all_ios_developer:
userinfo = ios_developer.user_id
err_issuer_id = error_issuer_id.get(userinfo.uid, [])
if userinfo.supersign_active:
status, result = IosUtils.active_developer(ios_developer)
msg = f"auto_check_ios_developer_active user:{userinfo} ios.developer:{ios_developer} status:{status} result:{result}"
if status:
IosUtils.get_device_from_developer(ios_developer)
logger.info(msg)
else:
err_issuer_id.append(ios_developer.issuer_id)
logger.error(msg)
error_issuer_id[userinfo.uid] = list(set(err_issuer_id))
for uid, val in error_issuer_id.items():
userinfo = UserInfo.objects.filter(uid=uid).first()
send_ios_developer_active_status(userinfo, Config.MSG_AUTO_CHECK_DEVELOPER % (
userinfo.first_name, ",".join(val)))