Update transaction.on_commit to use partial instead of lambda (#3448)
For reference, https://adamj.eu/tech/2022/08/22/use-partial-with-djangos-transaction-on-commit/. I think this may help with this one too: https://github.com/grafana/oncall-private/issues/2318
This commit is contained in:
parent
8c82dac6db
commit
ec1f120d9c
6 changed files with 23 additions and 10 deletions
|
|
@ -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}")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.",
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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}, "
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue