feat: base 优化邮件报错频率过高自动屏蔽

This commit is contained in:
caoqianming 2024-05-21 15:00:13 +08:00
parent 102e737729
commit 6084630636
1 changed files with 18 additions and 4 deletions

View File

@ -5,21 +5,35 @@ import logging
from django.conf import settings
from server.settings import get_sysconfig
import importlib
from django.core.cache import cache
# 实例化myLogger
myLogger = logging.getLogger('log')
@shared_task
def send_mail_task(**args):
config = get_sysconfig()
from django.core.mail import send_mail
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])
send_mail(**args)
cache_key = f'error_mail_{subject}'
email_tuple = cache.get(cache_key)
if email_tuple is None:
email_tuple = (0, True)
cache.set(cache_key, email_tuple, 60)
email_count, email_enable = email_tuple
if email_enable:
email_count += 1
if email_count > 4:
email_enable = False
# 如果频率高于每分钟4封,则自动屏蔽半小时
cache.set(cache_key, (email_count, email_enable), 1800)
args['subject'] = args['subject'] + '_发送频繁'
from django.core.mail import send_mail
send_mail(**args)
class CustomTask(Task):
"""