Почему 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, похоже, не распознает ни подписку, ни публикацию.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -that-chan

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