Redis和premissions

2024-05-26 14:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用redis,但是我想限制允许获取密钥值的客户端。。。你知道吗

这个想法是一台主机器,它通过redis以pythonic dict的形式传输“任务”,并且只允许一个客户机/工人获得它,不管是哪个工人,只有一个工人将获得它。你知道吗

我试着寻找一种私下交流的方式,这样主机就可以给工人一个密钥,这将是一个uuid,这样只有一个工人会得到它。。。但找不到办法。你知道吗

非常感谢!你知道吗


Tags: redis机器客户端客户机uuid方式密钥pythonic
1条回答
网友
1楼 · 发布于 2024-05-26 14:20:58

您不需要特定的权限管理来将给定的工作负载分配给一组worker,以便一个项目只由一个worker处理:您只需要一个排队系统。你知道吗

通过使用list data type,以及LPUSH/RPUSH-to-queue和BRPOP/BLPOP-to-dequeue-in-blocking模式等原语,您可以轻松地在Redis之上构建一个。你知道吗

您还可以重用众多现有Python模块/示例中的一个:

更新:

如果您需要一个查询-应答机制,在几个worker上进行负载平衡(比如Gearman),这仍然可以通过Redis实现(即使这可能不是最有效的方法)。你知道吗

客户端进程可以在启动时生成一个UUID来标识itelf。然后它就可以把工作推到队列:主(主队列)具有RPUSH/LPUSH。这些项应该包含有效负载本身,以及它们的发送者的标识(UUID)。然后,客户只需等待答案队列:UUID(BLPOP/BRPOP)。你知道吗

如果您希望支持流水线(即发送多个查询并等待多个答复),则需要确定项目本身(在发送者的顶部)的方式,以便客户端进程可以安全地将查询和答复关联起来。你知道吗

工人们刚把货物从队列:主(BLPOP/BRPOP),处理有效负载,检索发送方的UUID,并通过将其推送到队列:UUID(带LPUSH/RPUSH)。如果项目已标识,请确保返回结果中的项目标识。你知道吗

注意:您不需要显式地创建或删除队列。推送第一个项目时,会自动创建Redis列表;弹出最后一个项目时,会自动删除Redis列表。你知道吗

相关问题 更多 >

    热门问题