Как кэшировать данные в django channels и celery?
Я создаю веб-приложение, используя каналы django. У меня также есть функция задачи, которую я запускаю периодически (каждые 30 секунд) с помощью celery beat. Эта функция задачи отправляет данные на мой веб-сокет каждые 30 секунд.
Теперь, если потребитель присоединяется к моей группе каналов, он должен ждать некоторое время, пока не придут мои следующие данные. Но я хочу показать новому потребителю мои предыдущие данные, пока не придут новые. Поэтому я должен где-то кэшировать мои предыдущие данные.
Какой правильный способ сделать это? Я знаю, что можно использовать redis, но как в django-channels?
Все очень просто. для добавления данных в кэш просто сделайте:
cache.set(<key>, <value>, <timeout>)
Надеюсь, у вас получится!
Если вы используете AsyncConsumer, вы должны вызывать методы кэша с помощью sync_to_async обертки:
await sync_to_async(cache.set)(<key>, <value>, <timeout>)