相关疑难解决方法(0)

什么是预分叉Web服务器模型?

我想知道当Web服务器将自己描述为预分叉Web服务器时它究竟意味着什么.我有一些例子,例如红宝石的独角兽和蟒蛇的gunicorn.

更具体地说,这些是问题:

  • 这个模型解决了什么问题?
  • 最初启动预分叉Web服务器时会发生什么?
  • 它如何处理请求?

此外,一个更具体的问题为独角兽/ gunicorn:

假设我有一个我想用(g)独角兽运行的webapp.在初始化时,webapp将执行一些初始化操作(例如,填写其他数据库条目).如果我用多个worker配置(g)unicorn,初始化的东西会多次运行吗?

apache webserver preforking unicorn gunicorn

81
推荐指数
2
解决办法
2万
查看次数

为在 Gunicorn 上运行的 Flask-SQLAlchemy 应用程序选择 DB pool_size

我有一个在 Gunicorn 中运行的 Flask-SQLAlchmey 应用程序连接到 PostgreSQL 数据库,但我无法确定pool_size值应该是什么以及我应该期望有多少数据库连接。

这是我对事情如何运作的理解:

  • Python 3.7 中的进程不共享内存
  • 每个 Gunicorn 工人都是它自己的过程
  • 因此,每个 Gunicorn worker 将获得它自己的数据库连接池副本,并且不会与任何其他 worker 共享
  • Python 中的线程共享内存
  • 因此,Gunicorn worker 中的任何线程都将共享一个数据库连接池

到目前为止,这是正确的吗?如果这是正确的,那么对于在 Gunicorn 中运行的同步 Flask 应用程序:

  • 最大数据库连接数=(worker数)*(每个worker的线程数)?
  • 在一个 worker 中,它使用的池中的连接数是否会超过 worker 数?

是否有理由pool_size应该大于线程数?那么,对于启动的 gunicorn 应用程序gunicorn --workers=5 --threads=2 main:app应该pool_size是 2?如果我只使用工人,而不使用线程,是否有任何理由pool_size大于 1?

python database sqlalchemy gunicorn flask-sqlalchemy

18
推荐指数
3
解决办法
3004
查看次数