Я пишу приложение для публикации сообщений на канале в Redis и их обработки.Это долгоживущее приложение, которое в основном никогда не слушает канал.
def msg_handler():
r = redis.client.StrictRedis(host='localhost', port=6379, db=0)
sub = r.pubsub()
sub.subscribe(settings.REDIS_CHANNEL)
while True:
msg = sub.get_message()
if msg:
if msg['type'] == 'message':
print(msg)
def main():
for i in range(3):
t = threading.Thread(target=msg_handler, name='worker-%s' % i)
print('thread {}'.format(i))
t.setDaemon(True)
t.start()
while True:
print('Waiting')
time.sleep(1)
Когда я запускаю эту программу, я замечаю, что она не получает сообщения, которые были опубликованы на канале до ее запуска.Он отлично работает, чтобы получать сообщения, отправленные на канал после того, как приложение подписалось на канал.
В производстве очень вероятно, что в канале есть несколько сообщений до запуска программы.Есть ли способ получить эти старые сообщения?