feat: base 优化邮件报错频率过高自动屏蔽
This commit is contained in:
parent
e8ced88547
commit
a7d7a312f8
|
@ -5,26 +5,21 @@ import logging
|
|||
from django.conf import settings
|
||||
from server.settings import get_sysconfig
|
||||
import importlib
|
||||
import hashlib
|
||||
from django.core.cache import cache
|
||||
|
||||
# 实例化myLogger
|
||||
myLogger = logging.getLogger('log')
|
||||
|
||||
def generate_cache_key(subject):
|
||||
# 使用邮件主题生成一个唯一的缓存键
|
||||
hash_subject = hashlib.md5(subject.encode()).hexdigest()
|
||||
return f"error_email_{hash_subject}"
|
||||
|
||||
@shared_task
|
||||
def send_mail_task(**args):
|
||||
config = get_sysconfig()
|
||||
subject = args.get('subject', '500')
|
||||
args['subject'] = '{}:{}_{}_{}'.format(
|
||||
settings.SYS_NAME, settings.SYS_VERSION, config['base']['base_name_short'], args.get('subject', '500'))
|
||||
settings.SYS_NAME, settings.SYS_VERSION, config['base']['base_name_short'], subject)
|
||||
args['from_email'] = args.get('from_email', settings.EMAIL_HOST_USER)
|
||||
args['recipient_list'] = args.get(
|
||||
'recipient_list', [settings.EMAIL_HOST_USER])
|
||||
cache_key = generate_cache_key(args['subject'])
|
||||
cache_key = f'error_mail_{subject}'
|
||||
email_tuple = cache.get(cache_key)
|
||||
if email_tuple is None:
|
||||
email_tuple = (0, True)
|
||||
|
|
Loading…
Reference in New Issue