是否有可能检测到redis中发生brpoplpush的时间是什么时候做了什么?在我的情况下,我只想在我们的日志中添加一个注释。
在我改变之前,python worker剪断如下
while True:
_redis.brpoplpush(global_waiting_queue, local_waiting_queue)
logger.info("Moving job from global queue (%s) to local queue (%s)", global_waiting_queue, local_waiting_queue)
我想添加一个心跳功能,以便我可以监控我的工作人员。
while True:
_redis.brpoplpush(global_waiting_queue, local_waiting_queue, 5)
queue_worker_heartbeat(_redis, queue_worker_key)
可以按照以下几行做点什么
while True:
action = _redis.brpoplpush(global_waiting_queue, local_waiting_queue, 5)
if action:
logger.info("Moving job from global queue to local queue")
queue_worker_heartbeat(_redis, queue_worker_key)
答案 0 :(得分:1)
默认情况下,此功能已禁用。 要激活列表事件通知,您应在redis配置文件中设置以下行:
notify-keyspace-events "Kl"
' K'意味着您希望不被通知密钥空间事件,' l'列表事件。
BRPOPLPUSH生成一个rpop事件和一个lpush事件:
__keyspace@0__:myotherlist lpush
__keyspace@0__:mylist rpop
要收到通知,您必须订阅频道
psubscribe '__key*__:*'
它会向您发送以下事件:
__keyspace@0__:mykey rpop
__keyspace@0__:rpop mykey
您可以使用更精确的模式缩小通知范围。例如:
psubscribe '__keyspace@0__:mykey'
只有当命令应用于密钥“mykey”时才会通知您。在数据库0中。