Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como implementar o recurso de tempo limite pubsub do redis?


Como você não está encadeando (e estou assumindo que isso é intencional e, em alguns casos, sábio), você deve usar um tipo de interrupção. Sinais são um tipo de interrupção em sistemas Unix para permitir que você retorne a um retorno de chamada durante uma chamada que pode ser bloqueada.

Este exemplo de um arquivo aberto que nunca retornará está de acordo com o que você deseja fazer. É retirado de http://docs.python.org/library/signal.html#module-signal

Mas um aviso. Como o Python usa um Global Interpreter Lock para realizar o tratamento do sinal do SO, ele está sujeito a alguns problemas de estabilidade. Esses problemas devem ser raros normalmente.
import signal, os

def handler(signum, frame):
    print 'Signal handler called with signal', signum
    raise IOError("Couldn't open device!")

# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)

# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)

signal.alarm(0)          # Disable the alarm