Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zaimplementować funkcję limitu czasu pubsub w redis?

Ponieważ nie wątkujesz (i zakładam, że jest to celowe iw niektórych przypadkach mądre), musisz użyć typu przerwania. Sygnały są rodzajem przerwań w systemach Unix, które umożliwiają powrót do wywołania zwrotnego podczas połączenia, które może zostać zablokowane.

Ten przykład otwartego pliku, który nigdy nie wróci, jest zgodny z tym, co chcesz zrobić. Pochodzi z http://docs.python.org/library/signal.html#module-signal

Ale ostrzeżenie. Ponieważ Python używa Global Interpreter Lock do obsługi sygnałów systemu operacyjnego, jest narażony na pewne problemy ze stabilnością. Te problemy powinny być jednak rzadkością.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Najszybszy sposób na przechowywanie tablicy numpy w redis

  2. Problemy z redis systemu Ubuntu 16.04 z ulimit

  3. ServiceStack.Redis.Sentinel Wykorzystanie

  4. Uzyskaj dostęp do zadokowanego redis z hosta systemu Windows

  5. Używanie nginx do obsługi treści bezpośrednio z pamięci podręcznej redis