私はRedisのpubsub機能を使って彗星を実装したいが、pubsubにはタイムアウトがないので、もし私がps.listen()
ならば、クライアントがブラウザを閉じてもブロックされる。redisのpubsubタイムアウト機能を実装する方法は?
グリーンリングには、プロセスの作成時にタイムアウト機能があります。私はそれらを一緒に組み合わせる方法を知らない。
フラスコの擬似
@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?