Найти - Пользователи
Полная версия: tornadoredis
Начало » Python для экспертов » tornadoredis
1
hound
Добрый день, возник вопрос по работе с БД redis, в частотности с подпиской.

Использую python 3.4.0 и либу tornadoredis.
def show_message(mes):
    print(mes)
client_redis = tornadoredis.Client()
client_redis.connect()
client_redis.subscribe('test_sub')
client_redis.listen(show_message)

Соединение с БД проходит успешно, дальше например делаем публикацию на данную подписку:
import redis
r = redis.Redis()
r.publish('test_sub', '12345')

Должна вызываться функция show_message, но в ответ тишина…
если делать подписку через клиент redis (redis-cli), то там на публикацию отклик уже есть…
Находил примеры с либой brukva, но под 3-ий python она не идет…
hound
В общем, не до конца вкурил маны…
если кому интересно:
# Use the synchronous redis client to publish messages to a channel
redis_client = redis.Redis()
# Create the tornadoredis.Client instance
# and use it for redis channel subscriptions
subscriber = tornadoredis.pubsub.SockJSSubscriber(tornadoredis.Client())
class SubscriptionHandler(sockjs.tornado.SockJSConnection):
    """
    SockJS connection handler.
    Note that there are no "on message" handlers - SockJSSubscriber class
    calls SockJSConnection.broadcast method to transfer messages
    to subscribed clients.
    """
    def __init__(self, *args, **kwargs):
        super(MessageHandler, self).__init__(*args, **kwargs)
        subscriber.subscribe('test_channel', self)
    def on_close(self):
        subscriber.unsubscribe('test_channel', self)

Ну и пример, конечно, для варианта с использованием SockJS
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB