多个工人在gunicorn中的可变访问

时间:2014-05-14 11:18:58

标签: python gunicorn

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

1 个答案:

答案 0 :(得分:0)

假设通过全局变量,你的意思是另一个将它们保存在内存或磁盘上的进程,是的,我想是的。我还没有检查过Gunicorn的源代码,但基于我在一些旧代码中遇到的问题是,有几个用户从遗留的MyISAM表中检索了相同的密钥,递增它并使用它创建一个新的条目,假设它是独特的创建新记录。结果是偶尔(在非常繁忙的流量下)创建一条记录(最新的记录覆盖旧记录,全部使用相同的递增密钥)。在硬件升级期间从未观察到这个问题,当时我将网站的枪支工作人员减少为一个,这是首先探索这一可能原因的原因。

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

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