add random delay between sending emails to prevent thread limit errors when using 3rd party smtp like O365

This commit is contained in:
wh1te909 2020-08-01 22:16:34 +00:00
parent 8d5151bdec
commit ebbe2c5d16
2 changed files with 7 additions and 0 deletions

View File

@ -2,6 +2,7 @@ import os
import subprocess
from loguru import logger
from time import sleep
import random
import requests
from packaging import version as pyver
@ -150,6 +151,7 @@ def uninstall_agent_task(salt_id):
@app.task
def agent_outage_email_task(pk):
sleep(random.randint(1, 15))
outage = AgentOutage.objects.get(pk=pk)
outage.send_outage_email()
outage.outage_email_sent = True
@ -158,6 +160,7 @@ def agent_outage_email_task(pk):
@app.task
def agent_recovery_email_task(pk):
sleep(random.randint(1, 15))
outage = AgentOutage.objects.get(pk=pk)
outage.send_recovery_email()
outage.recovery_email_sent = True

View File

@ -1,4 +1,6 @@
import datetime as dt
import random
from time import sleep
from tacticalrmm.celery import app
from django.core.exceptions import ObjectDoesNotExist
@ -16,6 +18,7 @@ def handle_check_email_alert_task(pk):
# first time sending email
if not check.email_sent:
sleep(random.randint(1, 10))
check.send_email()
check.email_sent = djangotime.now()
check.save(update_fields=["email_sent"])
@ -23,6 +26,7 @@ def handle_check_email_alert_task(pk):
# send an email only if the last email sent is older than 24 hours
delta = djangotime.now() - dt.timedelta(hours=24)
if check.email_sent < delta:
sleep(random.randint(1, 10))
check.send_email()
check.email_sent = djangotime.now()
check.save(update_fields=["email_sent"])