tornado-redis icon indicating copy to clipboard operation
tornado-redis copied to clipboard

guarantee messages order

Open akoidan opened this issue 7 years ago • 0 comments

I have a stackoverflow question here.

Is it possible to consume redis messages within same order as they were published? E.g. see code below:

def __init__(self):
    self.async_redis_publisher = tornadoredis.Client(port=TORNADO_REDIS_PORT)
    self.async_redis = tornadoredis.Client(port=TORNADO_REDIS_PORT)

@engine
def listen(self, channels):
    yield Task(self.async_redis.subscribe, channels)
    self.async_redis.listen(self.pub_sub_message)

def pub_sub_message(self, message):
    print(current_time, message)

# code below represents 2 different *web socket messages* within same thread and same insntance of class
def on_ws_message(self): 
   self.async_redis_publisher.publish('1', 'message1') # also prints time to be sure about order
   # some timeout or e.g. another request 
   self.async_redis_publisher.publish('1', 'message2') # also prints time to be sure about order

redis-cli: monitor:

 1514312168.031272 [0 127.0.0.1:53314] "PUBLISH" "1" "message2"
 1514312168.035996 [0 127.0.0.1:53314] "PUBLISH" "1" "message1"

akoidan avatar Nov 29 '17 17:11 akoidan