sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan implementerer man redis' pubsub timeout-funktion?

Fordi du ikke tråder (og jeg går ud fra, at dette er bevidst og i nogle tilfælde klogt), skal du bruge en form for afbrydelse. Signaler er en form for afbrydelse på Unix-systemer, så du kan vende tilbage til et tilbagekald under et opkald, der kan blokere.

Dette eksempel på en fil åben, som aldrig vender tilbage, er i tråd med det, du ønsker at gøre. Det er taget fra http://docs.python.org/library/signal.html#module-signal

Men en advarsel. Fordi Python bruger en Global Interpreter Lock til at udføre OS-signalhåndtering, er det underlagt nogle stabilitetsproblemer. Disse problemer bør dog normalt være sjældne.

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. Sådan laver du forespørgsler med tidszoneindstillinger i Mongodb

  2. Selvsigneret SSL-forbindelse ved hjælp af PyMongo

  3. Spørg Mongodb om måned, dag, år... af en dato og klokkeslæt

  4. Hvilken SchemaType i Mongoose er bedst til tidsstempel?