sql >> Databasteknik >  >> NoSQL >> Redis

Hur implementerar man redis pubsub timeout-funktion?

Eftersom du inte trådar (och jag antar att detta är avsiktligt och i vissa fall klokt) måste du använda en typ av avbrott. Signaler är en typ av avbrott på Unix-system som gör att du kan återgå till ett återuppringning under ett samtal som kan blockera.

Detta exempel på en fil som är öppen som aldrig kommer tillbaka är i linje med vad du vill göra. Den är hämtad från http://docs.python.org/library/signal.html#module-signal

Men en varning. Eftersom Python använder ett Global Interpreter Lock för att utföra OS-signalhantering är det föremål för vissa stabilitetsproblem. Dessa problem bör dock vara sällsynta normalt.

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


  1. Ladda upp och hämta filer med MongoDB och Spring Boot

  2. Få ett särskilt element från mongoDB-arrayen

  3. Mongodb aggregat:konvertera datum till en annan tidszon

  4. Hur fungerar ServiceStack PooledRedisClientManager failover?