반응형
사용자가 동시에 접근하는 것을 예방하는 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)
아래 출력물 처럼 사용자가 몰릴 경우 코드가 동시에 사용됨으 확인할 수 있습니다.
반응형
'python web framework' 카테고리의 다른 글
direction tree to web with flask, 폴더 트리를 웹에 적용하기, 디렉션 웹에 적용하기 (0) | 2023.04.22 |
---|---|
flask render_template, flask html 파일 연동 (0) | 2023.04.21 |
플라스크 시작하기 flask hello world, hello flask, hellp python (0) | 2023.04.06 |
플라스크(flask) session을 이용한 로그인 / 로그아웃 (0) | 2023.03.29 |
flask 폴더에 있는 이미지 불러오기 html (0) | 2023.03.22 |
댓글