diff --git a/engine/apps/alerts/tasks/custom_button_result.py b/engine/apps/alerts/tasks/custom_button_result.py index 49ca40ab..0a0f4636 100644 --- a/engine/apps/alerts/tasks/custom_button_result.py +++ b/engine/apps/alerts/tasks/custom_button_result.py @@ -1,5 +1,6 @@ import json import logging +from functools import partial from django.conf import settings from django.db import transaction @@ -79,5 +80,5 @@ def custom_button_result(custom_button_pk, alert_group_pk, user_pk=None, escalat f"call send_alert_group_signal for alert_group {alert_group_pk}, " f"log record {log_record.pk} with type '{log_record.get_type_display()}'" ) - transaction.on_commit(lambda: send_alert_group_signal.apply_async((log_record.pk,))) + transaction.on_commit(partial(send_alert_group_signal.apply_async, (log_record.pk,))) task_logger.debug(f"Finish custom_button_result for alert_group {alert_group_pk}, custom_button {custom_button_pk}") diff --git a/engine/apps/alerts/tasks/escalate_alert_group.py b/engine/apps/alerts/tasks/escalate_alert_group.py index 354e5916..2a98cc17 100644 --- a/engine/apps/alerts/tasks/escalate_alert_group.py +++ b/engine/apps/alerts/tasks/escalate_alert_group.py @@ -1,3 +1,5 @@ +from functools import partial + from django.conf import settings from django.db import transaction from kombu.utils.uuid import uuid as celery_uuid @@ -77,7 +79,7 @@ def escalate_alert_group(alert_group_pk): task_id = celery_uuid() alert_group.active_escalation_id = task_id transaction.on_commit( - lambda: escalate_alert_group.apply_async((alert_group.pk,), immutable=True, eta=eta, task_id=task_id) + partial(escalate_alert_group.apply_async, (alert_group.pk,), immutable=True, eta=eta, task_id=task_id) ) alert_group.save(update_fields=["active_escalation_id", "raw_escalation_snapshot"]) log_message += "Next escalation poked, id: {} ".format(task_id) diff --git a/engine/apps/alerts/tasks/maintenance.py b/engine/apps/alerts/tasks/maintenance.py index 6befeffc..d9f0815c 100644 --- a/engine/apps/alerts/tasks/maintenance.py +++ b/engine/apps/alerts/tasks/maintenance.py @@ -1,3 +1,5 @@ +from functools import partial + from django.conf import settings from django.db import transaction from django.db.models import ExpressionWrapper, F, fields @@ -57,8 +59,9 @@ def disable_maintenance(*args, **kwargs): # because after transaction maintenance_mode is None. if organization.slack_team_identity: transaction.on_commit( - lambda: object_under_maintenance.notify_about_maintenance_action( - f"{mode_verbal} of {object_under_maintenance.get_verbal()} finished." + partial( + object_under_maintenance.notify_about_maintenance_action, + f"{mode_verbal} of {object_under_maintenance.get_verbal()} finished.", ) ) diff --git a/engine/apps/alerts/tasks/notify_user.py b/engine/apps/alerts/tasks/notify_user.py index e9c24376..99c16cda 100644 --- a/engine/apps/alerts/tasks/notify_user.py +++ b/engine/apps/alerts/tasks/notify_user.py @@ -1,4 +1,5 @@ import time +from functools import partial from django.conf import settings from django.db import transaction @@ -191,11 +192,11 @@ def notify_user_task( log_record.save() if notify_user_task.request.retries == 0: - transaction.on_commit(lambda: send_user_notification_signal.apply_async((log_record.pk,))) + transaction.on_commit(partial(send_user_notification_signal.apply_async, (log_record.pk,))) if not stop_escalation: if notification_policy.step != UserNotificationPolicy.Step.WAIT: - transaction.on_commit(lambda: perform_notification.apply_async((log_record.pk,))) + transaction.on_commit(partial(perform_notification.apply_async, (log_record.pk,))) delay = NEXT_ESCALATION_DELAY if countdown is not None: @@ -206,7 +207,8 @@ def notify_user_task( user_has_notification.save(update_fields=["active_notification_policy_id"]) transaction.on_commit( - lambda: notify_user_task.apply_async( + partial( + notify_user_task.apply_async, (user.pk, alert_group.pk, notification_policy.pk, reason), { "notify_even_acknowledged": notify_even_acknowledged, diff --git a/engine/apps/alerts/tasks/unsilence.py b/engine/apps/alerts/tasks/unsilence.py index f4badc8c..e970f914 100644 --- a/engine/apps/alerts/tasks/unsilence.py +++ b/engine/apps/alerts/tasks/unsilence.py @@ -1,3 +1,5 @@ +from functools import partial + from django.conf import settings from django.db import transaction @@ -44,7 +46,7 @@ def unsilence_task(alert_group_pk): reason="auto unsilence", ) un_silence_log_record.save() - transaction.on_commit(lambda: send_alert_group_signal.apply_async((un_silence_log_record.pk,))) + transaction.on_commit(partial(send_alert_group_signal.apply_async, (un_silence_log_record.pk,))) else: task_logger.info( f"Failed to unsilence alert_group {alert_group_pk}: alert_group status: {alert_group.status}, " diff --git a/engine/apps/heartbeat/tasks.py b/engine/apps/heartbeat/tasks.py index a00987e2..8c918d9f 100644 --- a/engine/apps/heartbeat/tasks.py +++ b/engine/apps/heartbeat/tasks.py @@ -1,4 +1,5 @@ import datetime +from functools import partial from celery.utils.log import get_task_logger from django.conf import settings @@ -57,7 +58,8 @@ def check_heartbeats() -> str: # Schedule alert creation for each expired heartbeat after transaction commit for heartbeat in expired_heartbeats: transaction.on_commit( - lambda: create_alert.apply_async( + partial( + create_alert.apply_async, kwargs={ "title": heartbeat.alert_receive_channel.heartbeat_expired_title, "message": heartbeat.alert_receive_channel.heartbeat_expired_message, @@ -82,7 +84,8 @@ def check_heartbeats() -> str: # Schedule auto-resolve alert creation for each expired heartbeat after transaction commit for heartbeat in restored_heartbeats: transaction.on_commit( - lambda: create_alert.apply_async( + partial( + create_alert.apply_async, kwargs={ "title": heartbeat.alert_receive_channel.heartbeat_restored_title, "message": heartbeat.alert_receive_channel.heartbeat_restored_message,