Как указать ">" в redis-py - PullRequest
1 голос
/ 01 июля 2019

Я смотрю на это в документации потока redis , которая гласит:

Пора попробовать что-то прочитать, используя группу потребителей:

> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"

Ответы XREADGROUP аналогичны ответам XREAD. Обратите внимание, однако, группа при условии выше, он заявляет, что я хочу читать из потока, используя группу потребителей mygroup, и я потребительская Алиса. Каждый раз, когда потребитель выполняет операцию с группа потребителей, она должна указать свое имя, однозначно идентифицируя это потребитель внутри группы.

В командной строке выше есть еще одна очень важная деталь, после обязательной опции STREAMS ID запрашивается для ключа mystream - это специальный идентификатор>. Этот специальный идентификатор действителен только в контекст групп потребителей, и это означает: сообщения никогда не доставляются другие потребители пока.

Я пытаюсь указать параметр ">" в redis-py.

Когда я смотрю документацию здесь , я не вижу никаких параметров в потоках, которые, кажется, позволяют мне это делать. Конкретно я пытаюсь:

>>> r.xreadgroup(mygroupname,myconsumer,{mystream : ">"},1)
[] # oh no, empty. WHY?!
# 
# even though
>>> r.xread({mystream: '1561950326849-0'}, count=1)
[[b'stuff-returned-successfully.]]

Чего мне не хватает? Почему я не могу указать ">" для обозначения невидимых сообщений?

1 Ответ

1 голос
/ 01 июля 2019

В этом вопросе вы ошибочно предположили, что у вас были / невидимые / сообщения. Эта команда должна работать, но не будет, если вы уже видели все сообщения один раз.

Попробуйте

# make sure you have not seen anything in your stream by resetting last seen to 0
>>> r.xgroup_setid(mystream,mygroupname,0) # RESET ALL

Сейчас

r.xreadgroup(mygroupname,myconsumer,{mystream : ">"},1)

отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...