HelloAmadeus
V2EX  ›  问与答

搞不懂一个关于 flask 和 wsgi 的线程问题

  •  
  •   HelloAmadeus · Dec 5, 2017 via Android · 2457 views
    This topic created in 3087 days ago, the information mentioned may be changed or developed.

    flask 是阻塞的嘛,那么一个 flask 进程每次只能处理一个请求。 uwsgi 来代理 flask 应用,只开 4 个进程,线程设为 1,那就同时处理 4 个请求。 uwsgi 开 1 个进程,100 个线程,那就可以同时处理 100 个请求。 进程 fork 很好理解,所有的状态都保存了,互不影响,一个进程无论全局还是局部变量都不会影响到另一个进程。 以上理解有问题吗? 继续,到线程这里,线程共享全局变量,那么我在 view 函数里面读取并修改全局变量,例如: gval=0

    @app.url('/') def hello() global gval with threading.Lock(): gval++ return 'hello world {}' .format(gval)

    上面代码,不论 uwsgi 开了多少线程,那么每次请求都会使得全局变量加 1。 以上对 uwsgi 多线程的理解有问题吗?

    wsgi 在哪一个函数开始新开一个线程,那些变量是线程共享的?

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   971 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:01 · PVG 04:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.