Как отсеять неактивные / плохие токены APN в Django-push-notifications

Я использую django-push-notifications (DPN) для отправки уведомлений в приложение iOS. Когда я отправляю уведомление, DPN дает мне ответ от APN в виде диктанта с токенами устройств и их статусом.

r = devices.send_message(message="Fancy pansy message.", sound="default")

Где ответ выглядит примерно так:

r = [
        {
            '<devicetoken1>': 'Success',
            '<devicetoken2>': 'BadDeviceToken',
            '<devicetoken3>': 'Success',
        }
    ]

У меня есть представление в Django, которое принимает POST запросы. Я использую эту конечную точку для публикации сообщения, которое я отправляю в APN с помощью send_message(), а также для сохранения сообщения в моей DB.

Итак, мой план состоял в том, чтобы добавить следующую простую логику в то же представление для обрезки БД каждый раз, когда я получаю отзывы о просроченных / плохих токенах устройств от APN (или что-то вроде этого, мне, конечно, может понадобиться добавить больше статусов, чем "BadDeviceToken").

for token_str, token_status in r[0].items():
    if token_status == 'BadDeviceToken':
        APNSDevice.objects.filter(registration_id=token_str).delete()
            

Мой вопрос в том, есть ли лучший способ сделать это? Должна ли обрезка выполняться с помощью какой-то периодической задачи? Есть ли какие-либо проблемы с выполнением такого рода логики в представлениях в Django? Или я упускаю какие-либо существующие решения этой проблемы (обрезка лексем) в Django или DPN?

Выпьем!

Вернуться на верх