sql >> Database >  >> NoSQL >> Redis

Hoe de pubsub-time-outfunctie van redis implementeren?

Omdat je niet aan het threaden bent (en ik neem aan dat dit opzettelijk is en in sommige gevallen verstandig), moet je een soort interrupt gebruiken. Signalen zijn een soort onderbreking op Unix-systemen waarmee u kunt terugkeren naar een terugbelverzoek tijdens een gesprek dat zou kunnen blokkeren.

Dit voorbeeld van een geopend bestand dat nooit meer terugkomt, komt overeen met wat u wilt doen. Het is afkomstig van http://docs.python.org/library/signal.html#module-signal

Maar een waarschuwing. Omdat Python een Global Interpreter Lock gebruikt om OS-signaalverwerking uit te voeren, is het onderhevig aan enkele stabiliteitsproblemen. Deze problemen zouden normaal gesproken echter zeldzaam moeten zijn.

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. Verwijder mongoDB van ubuntu

  2. hoe een sleutel van een kaart in REDIS laten verlopen?

  3. MongoDB punt (.) in sleutelnaam

  4. Voeg alle bestaande velden toe en voeg nieuwe velden toe aan het document