Время жизни сообщений Django Channels

У меня есть некоторый (возможно, огромный) объем данных JSON, которые мне нужно отправить в канал Django. Данные имеют очень маленькое требуемое время жизни (достаточно 2-3 секунд). Я использую Redis в качестве бэкенда.

Каково время жизни сообщения по умолчанию? Можно ли указать время жизни сообщения?


person stasdavydov    schedule 28.02.2017    source источник


Ответы (2)


По умолчанию срок службы не ограничен, но вы можете установить его, используя SETEX вместо SET:

SETEX mykey 10 "Hello"

или с помощью SET с флагом EX:

SET mykey "Hello" EX 10
person Chris Tanner    schedule 01.03.2017
comment
Как это сделать с помощью каналов Django? - person stasdavydov; 02.03.2017
comment
Да, эта опция установлена ​​для всех сообщений в канале, но мне нужно установить срок действия только для части сообщений. Я понял, что можно настроить два слоя каналов с разным значением срока действия. - person stasdavydov; 03.03.2017
comment
Другой способ — создать уровень второго канала с настройкой короткого срока действия и использовать его для сообщений с коротким сроком действия. - person stasdavydov; 08.07.2017

Я нашел простой способ решить мою проблему без исправления кода asgi_redis для истечения срока действия сообщения клиента.

Я создал два слоя каналов в своей конфигурации. Затем я установил желаемый короткий срок действия для второго слоя канала. Все короткие сообщения в режиме реального времени теперь передаются и обрабатываются потребителем этого уровня канала.

person stasdavydov    schedule 08.07.2017