Почему Redis сообщает об отсутствии подписчиков на канал после того, как я подписался на этот канал без ошибок?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Redis сообщает об отсутствии подписчиков на канал после того, как я подписался на этот канал без ошибок?

Сообщение Anonymous »

Я пытаюсь отправить обратную связь в реальном времени через веб-сокеты, и я делаю это, отправляя данные через Redis с сервера rest-api на сервер веб-сокера (оба написаны на Python/Django). На сервере веб-сокетов я подписываюсь на канал с именем «события» следующим образом:

Код: Выделить всё

redis_connection = redis.Redis(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
db=settings.REDIS_CACHE_DB,
)
pubsub = redis_connection.pubsub()
pubsub.subscribe(events=process_event)
На сервере rest-api я публикую данные в тот же канал Redis следующим образом:

Код: Выделить всё

connection.publish("events", json.dumps({"user_email": user.email, "message": message}))
Пытаясь выяснить, почему ни одно событие не дошло до обработчика «process_event», я обнаружил, что метод публикации возвращает количество подписчиков канала, поэтому я обновил эту строку до это:

Код: Выделить всё

count = connection.publish("events", json.dumps({"user_email": user.email, "message": message}))
print(f"Published to events channel with {count} subscribers")
Результат всегда равен 0, даже после указанной выше подписки. Когда я напрямую попытался запросить количество подписчиков, я зашёл в Docker-контейнер redis-stack и увидел следующее:

redis-cli
127.0.0.1:6379> События PUBSUB NUMSUB
  • "события"
    (целое число) 0< /li>

127.0.0.1:6379>

Журналы самого redis-stack, похоже, не распознают ни подписку, ни публикацию. Однако, если я использую команду «redis-cli Monitor», я вижу, что оба отображаются:

1727460056.950779 [0 172.17.0.1:58210] «КЛИЕНТ» " SETINFO" "LIB-NAME" "redis-py"
1727460056.952892 [0 172.17.0.1:58210] "CLIENT" "SETINFO" "LIB-VER" "5.0.8"
1727460056.954072 [1 172.17. 0.1:58210] "SELECT" "1"


1727460056.956442 [1 172.17.0.1:58210] "SUBSCRIBE" "events "


1727460122.677189 [0 172.17.0.1:45874] "CLIENT" "SETINFO" "LIB-NAME" "redis- py"
1727460122.678973 [0 172.17.0.1:45874] "CLIENT" "SETINFO" "LIB-VER" "5.0.8"
1727460122.681286 [1 172.17.0.1:45874] "SELECT" "1"


1727460122.683120 [1 172.17.0.1:45874] "ПУБЛИКОВАТЬ" "events" "{"user_email": "admin@ domain.com", "message": "Содержимое сообщения"}"

После всего этого события PUBSUB NUMSUB по-прежнему дают тот же результат.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -that-chan
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»