代码之家  ›  专栏  ›  技术社区  ›  forumulator

在烧瓶应用中保持全局状态[副本]

  •  0
  • forumulator  · 技术社区  · 6 年前

    这似乎是一个很明显的问题,但是围绕这个问题的很多文档都很混乱,警告我 保持一个全球性的国家而不是告诉我怎么做。

    全球的 池,集中管理),我该怎么做?

    如果我用 flask.g flask.current_app ? 我是不是把游泳池变成一个独立的过程?还有别的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   bruno desthuilliers    6 年前

    web后端应用程序中关于“不保持每个进程的全局状态”的警告(Django或任何wsgi应用程序都会遇到同样的问题)仅适用于希望在请求和进程之间共享的状态。

    如果您可以拥有每个进程的状态(例如db connection通常是每个进程的状态),那么这不是问题。wrt/连接池,您可以(或不)决定每个服务器进程有不同的池是可以的。

    对于任何其他情况(需要在进程之间共享的任何状态),这通常由某些使用外部数据库或缓存进程的进程处理,因此,如果要为所有Flask进程拥有一个单独的连接池,则必须使用不同的服务器进程来维护池。

    还要注意:

    同一应用程序的多个进程(据我所知,这些进程可以派生 )

    实际上,这与“大”无关。对于传统的“阻塞”服务器,只能通过使用多线程或多处理来处理并发请求。由于各种原因,unix哲学传统上支持多处理(“prefork”模型),并且 Python's multithreading is bordering on useless

    长话短说,考虑一下wsgi应用程序的任何生产设置 在后台运行多个进程。