python - 具有多个 worker 的 gunicorn 中的变量访问

是否可以让多个工作人员与 Gunicorn 一起运行,并让他们以有序的方式访问一些全局变量,即不会遇到竞争条件问题?

最佳答案

假设全局变量是指将它们保存在内存或磁盘上的另一个进程,是的,我认为是这样。我没有检查 Gunicorn 的源代码,但基于我在一些旧代码中遇到的问题是几个用户从遗留 MyISAM 表中检索相同的 key ,递增它并使用它创建一个新条目假设它是独树一帜,创造新记录。结果是偶尔(在非常繁忙的流量下)创建一条记录(最新的记录覆盖旧的记录,所有记录都使用相同的递增键)。在硬件升级期间从未观察到这个问题,当我将网站的 gunicorn workers 减少到一个时,这就是首先探索这个可能原因的原因。

现在通常,减少工作人员会降低性能,最好用事务来处理这些问题(如果您使用的是 ACID RDBMS,与 MyISAM 不同)。 Redis 和类似商店中应该存在同样的问题。

此外,这不应该是文件和套接字的问题,因为据我所知,操作系统会阻止其他进程(甚至子进程)访问打开的文件。

https://stackoverflow.com/questions/23653170/

相关文章:

ruby-on-rails - 在 Rails Controller 中跳过多个过滤器

validation - 如何验证从应用程序到我的 Web 服务的请求的真实性

python - 在你的包的 setup.py 中使用 setuptools——你如何有条件地安装脚

hibernate - hql 在右外连接上获取

string - 如何在 Matlab 中为文本添加轮廓?

javascript - 为什么在 Chrome Dev-tools 中的 Resources ->

gcc - 在 GCC 的函数中禁用特定循环的自动矢量化

unix - 2个unix文件怎么会有相同的inode,但是inode的引用计数是1?

c# - displayformatattribute 自定义格式化字符串

sql-server-2008-r2 - SQL Server 2008 R2 Express :