내 앱에서 공통 객체의 상태는 요청을 통해 변경되며 응답은 상태에 따라 다릅니다.
class SomeObj():
def __init__(self, param):
self.param = param
def query(self):
self.param += 1
return self.param
global_obj = SomeObj(0)
@app.route('/')
def home():
flash(global_obj.query())
render_template('index.html')
내 개발 서버에서 이것을 실행하면 1, 2, 3 등을 얻을 것으로 예상됩니다. 100 개의 서로 다른 클라이언트에서 동시에 요청을하면 문제가 발생할 수 있습니까? 예상되는 결과는 100 개의 서로 다른 클라이언트가 각각 1에서 100까지의 고유 한 숫자를 보게되는 것입니다. 또는 다음과 같은 일이 발생합니다.
- 클라이언트 1 쿼리.
self.param
1 씩 증가합니다. - return 문이 실행되기 전에 스레드
self.param
는 클라이언트 2로 전환 됩니다. 다시 증가합니다. - 스레드는 클라이언트 1로 다시 전환되고 클라이언트는 숫자 2를 반환합니다.
- 이제 스레드가 클라이언트 2로 이동하여 숫자 3을 반환합니다.
클라이언트가 두 개뿐이므로 예상 결과는 2와 3이 아니라 1과 2였습니다. 숫자를 건너 뛰었습니다.
애플리케이션을 확장 할 때 실제로 이런 일이 발생합니까? 전역 변수에 대한 대안은 무엇입니까?