sql >> Databáze >  >> NoSQL >> Redis

Jak implementovat funkci časového limitu pubsub redis?

Protože nevytváříte vlákna (a předpokládám, že je to záměrné a v některých případech moudré), musíte použít typ přerušení. Signály jsou typem přerušení na unixových systémech, které vám umožní vrátit se ke zpětnému volání během hovoru, který by mohl blokovat.

Tento příklad otevřeného souboru, který se nikdy nevrátí, je v souladu s tím, co chcete udělat. Je převzato z http://docs.python.org/library/signal.html#module-signal

Ale varování. Vzhledem k tomu, že Python používá Global Interpreter Lock k provádění manipulace se signálem OS, je vystaven určitým problémům se stabilitou. Tyto problémy by však měly být vzácné.

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. MongoDB - velikost souboru je obrovská a stále roste

  2. Bitva o databáze NoSQL - srovnání MongoDB a Cassandra

  3. Chat v reálném čase s Modulus a Node.js

  4. Dekódování Go JSON je velmi pomalé. Jaký by byl lepší způsob, jak to udělat?