Quiero utilizar la característica pubsub de Redis para implementar cometa, pero pubsub no tiene tiempo de espera, por lo que si yo ps.listen()
, se bloqueará, incluso si el cliente cierra el navegador.cómo implementar la función de tiempo de espera pubsub de redis?
greenlet tiene la característica de tiempo de espera cuando se genera el proceso. pero no sé cómo combinarlos.
seudo del frasco
@app.route('/')
def comet():
rc = redis.Redis()
ps = rc.pubsub()
ps.subscribe('foo')
for item in ps.listen():
if item['type'] == 'message':
return item['data']
# ps.listen() will block, so how to make it timeout after 30 s?