mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Add prioritization to webhook/notifications queue (#5513)
* Add prioritization to webhook/notifications queue * Add missing code * Missing license header * Fix argument * Use redis pipeline * Update license header
This commit is contained in:
@@ -31,6 +31,7 @@ from django.urls import reverse
|
||||
from django.utils.crypto import get_random_string
|
||||
from django.utils.functional import cached_property
|
||||
|
||||
from pretix.helpers.celery import get_task_priority
|
||||
from pretix.helpers.json import CustomJSONEncoder
|
||||
|
||||
|
||||
@@ -131,9 +132,15 @@ class LoggingMixin:
|
||||
logentry.save()
|
||||
|
||||
if logentry.notification_type:
|
||||
notify.apply_async(args=(logentry.pk,))
|
||||
notify.apply_async(
|
||||
args=(logentry.pk,),
|
||||
priority=get_task_priority("notifications", logentry.organizer_id),
|
||||
)
|
||||
if logentry.webhook_type:
|
||||
notify_webhooks.apply_async(args=(logentry.pk,))
|
||||
notify_webhooks.apply_async(
|
||||
args=(logentry.pk,),
|
||||
priority=get_task_priority("notifications", logentry.organizer_id),
|
||||
)
|
||||
|
||||
return logentry
|
||||
|
||||
|
||||
@@ -35,11 +35,14 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import connections, models
|
||||
from django.utils.functional import cached_property
|
||||
|
||||
from pretix.helpers.celery import get_task_priority
|
||||
|
||||
|
||||
class VisibleOnlyManager(models.Manager):
|
||||
def get_queryset(self):
|
||||
@@ -186,7 +189,19 @@ class LogEntry(models.Model):
|
||||
|
||||
to_notify = [o.id for o in objects if o.notification_type]
|
||||
if to_notify:
|
||||
notify.apply_async(args=(to_notify,))
|
||||
organizer_ids = set(o.organizer_id for o in objects if o.notification_type)
|
||||
notify.apply_async(
|
||||
args=(to_notify,),
|
||||
priority=settings.PRIORITY_CELERY_HIGHEST_FUNC(
|
||||
get_task_priority("notifications", oid) for oid in organizer_ids
|
||||
),
|
||||
)
|
||||
to_wh = [o.id for o in objects if o.webhook_type]
|
||||
if to_wh:
|
||||
notify_webhooks.apply_async(args=(to_wh,))
|
||||
organizer_ids = set(o.organizer_id for o in objects if o.webhook_type)
|
||||
notify_webhooks.apply_async(
|
||||
args=(to_wh,),
|
||||
priority=settings.PRIORITY_CELERY_HIGHEST_FUNC(
|
||||
get_task_priority("notifications", oid) for oid in organizer_ids
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user