Как отсеять неактивные / плохие токены 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?
Выпьем!