推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
PEax
V2EX  ›  Python

n 个并发进程(接口)共用一个公共变量 Q,当 Q 变量需要更新的时候,如何实现进程互斥?

  •  
  •   PEax · Nov 1, 2022 · 3313 views
    This topic created in 1471 days ago, the information mentioned may be changed or developed.
    各位大佬,我用 flask 写 server 服务,有一个场景不知道怎么处理
    1.有一个 API ,里面需要用到一个变量 Q ,变量 Q 有效期 24 小时,且变量 Q 有使用次数限制( 10 次)。
    2.当第一个用户调用的时候如果没有变量 Q ,则生成变量 Q 。
    3.如何在多人请求的时候只生成一个变量 Q ?
    4.如果在多人请求的时候更新变量 Q ?
    5.如何避免多人请求的时候污染变量 Q ?
    6.如果中途变量 Q 失效,要怎么处理呢?
    12 replies  •  2022-11-01 11:31:49 +08:00
    simple2025
    simple2025
    Nov 1, 2022❤️1
    1
    redis? redis 加锁?
    yushenglin
    yushenglin
    Nov 1, 2022❤️1
    2
    redis 就可以实现了
    ChenGangS
    ChenGangS
    Nov 1, 2022❤️1
    3
    典型的多进程竞争问题,肯定是加锁解决
    sivacohan
    sivacohan
    Nov 1, 2022❤️1
    4
    1. 要么是并行转串行,Q 前面加一个队列。
    2. 要么是通过加锁解决,参考分布式锁。
    kwh
    kwh
    Nov 1, 2022❤️1
    5
    多人请求共享锁,更新排它锁
    siweipancc
    siweipancc
    Nov 1, 2022 via iPhone
    6
    ……py 没这块的基础理论吗
    PEax
    PEax
    OP
    Nov 1, 2022
    7
    @siweipancc 献丑了。。。py 也是兴趣爱好,我是前端,没写过这种场景的服务
    PEax
    PEax
    OP
    Nov 1, 2022
    8
    谢谢各位大佬,我去尝试下。
    opengps
    opengps
    Nov 1, 2022
    9
    redis 共享锁,可以说是能想到的最容易的办法
    911061873
    911061873
    Nov 1, 2022
    10
    搜索一下 单例模式
    siweipancc
    siweipancc
    Nov 1, 2022 via iPhone
    11
    高安全低性能的,全局锁梭哈。
    高性能高性能,过期队列。
    中庸方案,自增跟锁两次检查。

    多机请用中庸 redis
    Jooooooooo
    Jooooooooo
    Nov 1, 2022
    12
    这条件不全呀, A 拿着 Q 要更新的时候, B 也想更新怎么处理呢?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2968 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 05:24 · PVG 13:24 · LAX 21:24 · JFK 00:24
    ♥ Do have faith in what you're doing.