我需要通过信号处理唤醒列表中的阻塞pop(redis客户端)(在本例中为SIGUSR1)
这是示例代码:
import redis
import signal
r = redis.Redis()
def handler(signal, frame):
q = redis.Redis()
q.rpush('test', 1)
print 'sign arrived'
signal.signal(signal.SIGUSR1, handler)
print 'start'
print r.blpop('asd')
print 'end'
此代码的输出是
start
// here I send the signal with "$ kill -10 <pid>"
sign arrived
然后停止
其他信息:
有什么问题? 提前谢谢
如果我复制推送,则可以工作:
def handler(signal, frame):
q = redis.Redis()
q.rpush('test', 1)
q.rpush('test', 1)
print 'sign arrived'
redis队列中似乎没有其他消息。 看起来第一次推动消失了......