首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Redis和Python获取锁时的优先级

使用Redis和Python获取锁时的优先级
EN

Stack Overflow用户
提问于 2021-10-11 10:53:36
回答 1查看 431关注 0票数 0

我希望许多用户不要同时运行一项任务。所以我用了这个代码:

代码语言:javascript
复制
REDIS_CLIENT = redis.Redis()
lock = REDIS_CLIENT.lock("task_key", timeout=60)
have_lock = lock.acquire(blocking=True, blocking_timeout=60)

有两个用户,它运行良好。但拥有超过2个用户:

  1. 用户1获取任务的锁。
  2. 用户1运行任务
  3. 用户2尝试获取任务的锁,但它已经被获取,因此他等待。
  4. 用户3尝试获取任务的锁,但它已经被获取,因此他等待。
  5. 用户1任务结束
  6. 用户3获取任务的锁。
  7. 用户3运行任务
  8. 用户2生气是因为用户3偷走了他的住所

在步骤6,用户2或用户3可以随机获取锁。但是我想确定用户2首先获得了它。

如何确定优先次序?

PS :我用Redis来运行芹菜的“唯一”任务:https://stackoverflow.com/a/19499540/5077962

EN

回答 1

Stack Overflow用户

发布于 2021-10-11 11:08:08

如何确定优先次序?

那不是件事。

这个问题被称为“锁公平性”。如果您的redis客户端没有实现公平的锁,那么您唯一的选择就是提交它,例如基于公平的信号量食谱

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69525033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档