有没有可能让多个工作者运行Gunicorn,并让他们以有序的方式访问一些全局变量,即不会遇到竞态条件的问题?
发布于 2014-09-06 18:35:14
假设全局变量是指将它们保存在内存或磁盘上的另一个进程,是的,我认为是这样的。我没有检查过Gunicorn的源代码,但基于我在一些旧代码中遇到的一个问题,几个用户从遗留的MyISAM表中检索相同的键,递增它并使用它创建一个新条目,假设它对于创建新记录是唯一的。结果是偶尔(在流量非常大的情况下)会创建一条记录(最新的记录覆盖旧的记录,都使用相同的增量键)。这个问题在硬件升级期间从未被发现,当时我将网站的gunicorn工作人员减少到一个,这就是我首先探索这个可能的原因的原因。
现在通常,减少工作进程会降低性能,最好用事务来处理这些问题(如果您使用ACID RDBMS,与MyISAM不同)。同样的问题应该出现在Redis和类似的商店中。
这对于文件和套接字也不是问题,因为据我所知,操作系统会阻止其他进程(甚至是子进程)访问打开的文件。
https://stackoverflow.com/questions/23653170
复制相似问题