如何解决Flask Gevent更改类变量
我有一个使用Gevent处理事务的Flask Web服务。下面的示例演示了Web服务的基本设计,例如,在运行多种类型的事务时,我将调用A和B,“ A”的类变量会影响“ B”的事务。
我定义了一个基类,该基类在A和B类型之间有很多相似之处。奇怪的是,在下面的示例中,执行过程中在不同位置的run方法中“ type”被更改。
有趣的观察
-
如果我切换为同步工作程序而不是gevent,则不会发生该问题
-
如果我仅运行事务类型“ B”,则这似乎没有发生。
-
还有其他一些继承自BaseType的交易,但是这些交易不会影响“ B”
-
这似乎发生在1/40个事务中(一次又一次地运行相同的请求)
class Base() def __init__(self,type) self.type = None def set_what_i_am(value) self.type = value def what_am_i() return self.type Class A(Base) def run() # Do some processing log(self.type) Class B(A) def run() # Do some processing log(self.type) main_method if request_type == A obj = A() else: obj = B() obj.set_what_i_am("something") obj.run()
这些是我相关的环境设置。
gevent==20.5.0
greenlet==0.4.15
gunicorn==19.9.0
Flask==1.0.2
flask-restplus==0.12.1
Python 3.6.8
任何想法都会受到赞赏,因为我有点迷茫
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。