PUBSUB CHANNELS возвращает пустой список - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть программа на Python, как показано ниже

import json
import threading

import redis

CHANNELS_PREFIX = 'client'


class Listener(threading.Thread):
    STOP = 1
    CONTINUE = 0

    def __init__(self, r):
        threading.Thread.__init__(self)
        self.redis = r
        self.pubsub = self.redis.pubsub()
        self.pubsub.psubscribe(["%s:*" % CHANNELS_PREFIX])

    def reload(self, data):
        print "Reloaing", data
        return Listener.CONTINUE

    def shutdown(self, data):
        self.pubsub.unsubscribe()
        print "unsubscribed and finished"
        return Listener.STOP

    def run(self):
        for item in self.pubsub.listen():
            print item
            type = item['type']
            if type == 'psubscribe':
                continue
            data = item['data'].strip()
            channel, method_name = item['channel'].split(':')
            method = getattr(self, method_name)
            if method is not None:
                if method(data) == Listener.STOP:
                    break


class Publisher():

    def __init__(self, r):
        self.redis = r

    def key(self, command):
        return "%s:%s" % (CHANNELS_PREFIX, command)

    def send(self, command, data):
        self.redis.publish(self.key(command), json.dumps(data))

if __name__ == "__main__":
    client = Listener(redis.Redis())
    client.start()

    publisher = Publisher(redis.Redis())

Когда я выполняю это и пытаюсь найти список каналов на моем сервере Redis, используя redis-cli, используя «PUBSUB CHANNELS», получая пустой список, как составить список всех каналов. Программа отлично работает.

1 Ответ

1 голос
/ 23 апреля 2019

PUBSUB CHANNELS

Список текущих активных каналов.Активный канал - это канал Pub / Sub с одним или несколькими подписчиками (, не включая клиентов, подписанных на шаблоны ).

Ваш код использует команду PSUBSCRIBE и подписывается на шаблон, НЕ канал, поэтому PUBSUB CHANNELS возвращает пустой список.

Также вы можете взглянуть на команду PUBSUB NUMPAT , которая возвращает количество шаблонов.

...