본문 바로가기
python web framework

사용자가 동시에 접근하는 것을 예방하는 flask 코드 threading.Lock

by 타닥타닥 토다토닥 부부 2023. 7. 2.
반응형

사용자가 동시에 접근하는 것을 예방하는 flask 코드

 

threading.Lock 사용 예시

from flask import Flask
import time
import threading

app = Flask(__name__)
lock = threading.Lock()

@app.route('/')
def critical_section():
    with lock:
    	### 동시에 수정하여서는 안되는 코드 예시
        for i in range(10):
            print(i)
            time.sleep(1)
        ##
        
    return 'Finished!'

if __name__ == '__main__':
    app.run(port=5000, debug=True)

위 코드 실행시 하나의 작업이 끝나고 나서야 다음작업을 실행하는 것을 아래와 같은 출력물을 통해 확인할 수 있습니다.

 

 

그렇다면 아래코드 처럼 !!!!!!! threading.Lock 을 사용하지 않는다면,

from flask import Flask
import time
import threading

app = Flask(__name__)
lock = threading.Lock()

@app.route('/')
def critical_section():
    # thread.Lock 기능 사용안함
    ###### with lock:
    for i in range(10):
        print(i)
        time.sleep(1)

    return 'Finished!'

if __name__ == '__main__':
    app.run(port=5000, debug=True)

아래 출력물 처럼 사용자가 몰릴 경우 코드가 동시에 사용됨으 확인할 수 있습니다.

반응형

댓글