Как кэшировать данные в 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>)
Вернуться на верх