From 0fc7547411a3152ba78385e5c8deb181fa1bb082 Mon Sep 17 00:00:00 2001 From: Mykhailo Poienko <22IMC10258@fh-krems.ac.at> Date: Thu, 19 Dec 2024 14:56:37 +0100 Subject: [PATCH] break after batch --- demoapp/settings.py | 1 + sendmail/mail.py | 5 ++++- sendmail/settings.py | 3 +++ sendmail/tasks.py | 5 ++++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/demoapp/settings.py b/demoapp/settings.py index b0cf3705..804e89bd 100644 --- a/demoapp/settings.py +++ b/demoapp/settings.py @@ -207,6 +207,7 @@ 'CELERY_ENABLED': True, 'MAX_RETRIES': 0, 'BATCH_SIZE': 100, + 'BREAK_AFTER_BATCH': True, 'BATCH_DELIVERY_TIMEOUT': 30, 'MESSAGE_ID_ENABLED': True, 'DEFAULT_PRIORITY': 'medium', diff --git a/sendmail/mail.py b/sendmail/mail.py index ed3271d4..24ba9ddc 100644 --- a/sendmail/mail.py +++ b/sendmail/mail.py @@ -17,7 +17,7 @@ from sendmail.models.log import Log from sendmail.settings import (get_available_backends, get_batch_size, get_default_language, get_email_address_model, get_log_level, get_max_retries, get_message_id_enabled, get_message_id_fqdn, - get_retry_timedelta, get_sending_order) + get_retry_timedelta, get_sending_order, get_break_after_batch) from sendmail.signals import email_queued from sendmail.utils import (create_attachments, get_emailmerge, get_language_from_code, get_or_create_recipient, get_recipients_objects, parse_emails, parse_priority, set_recipients, @@ -333,6 +333,9 @@ def send_signal_after_commit(): for batch in split_into_batches(emails): email_queued.send(sender=EmailModel, emails=batch) + if get_break_after_batch(): + break + transaction.on_commit(send_signal_after_commit) return emails diff --git a/sendmail/settings.py b/sendmail/settings.py index 7b54f366..8ddbe498 100644 --- a/sendmail/settings.py +++ b/sendmail/settings.py @@ -133,6 +133,9 @@ def get_email_address_setting(): # def get_override_recipients(): # return get_config().get('OVERRIDE_RECIPIENTS', None) +def get_break_after_batch(): + return get_config().get('BREAK_AFTER_BATCH', False) + def get_max_retries(): return get_config().get('MAX_RETRIES', 0) diff --git a/sendmail/tasks.py b/sendmail/tasks.py index f70e704c..32793e46 100644 --- a/sendmail/tasks.py +++ b/sendmail/tasks.py @@ -12,7 +12,7 @@ from django.utils.timezone import now from sendmail.mail import _send_bulk, get_queued -from sendmail.settings import get_celery_enabled +from sendmail.settings import get_celery_enabled, get_break_after_batch from sendmail.utils import cleanup_expired_mails try: @@ -44,6 +44,9 @@ def send_queued_mail(*args, **kwargs): except Exception as e: raise e + if get_break_after_batch(): + break + db_connection.close()