반응형
Flask 응용 프로그램 내부에서 Python에서 새 스레드를 시작하려고합니다. 요청에 의해 트리거되는 백그라운드 작업을 수행하고 있지만 요청에 응답하기 위해 작업이 완료 될 때까지 기다릴 필요가 없습니다.
이 하위 위협의 플라스크 요청을 들어오는 요청으로 설정할 수 있습니까? 이유는 DB에 대한 쿼리에 대한 ACL (mongoDB 앞의 mongoengine)은 요청의 사용자 (플라스크의 요청 객체에서 가져옴)에 의존하여 객체에 대한 액세스 권한이 있는지 확인하고 요청이 하위 스레드에서는 사용할 수 없습니다.
어떤 생각이라도 많이 주시면 감사하겠습니다.
여기에 내가 지금 처리하는 방법에 대한 의사 코드가 있지만 작동하지 않습니다.
@app.route('/my_endpoint', methods=['POST'])
def my_endpoint_handler():
#do tracking in sub-thread so we don't hold up the page
def handle_sub_view(req):
from flask import request
request = req
# Do Expensive work
thread.start_new_thread(handle_sub_view, (request))
return "Thanks"
해결 방법
@app.route('/my_endpoint', methods=['POST'])
def my_endpoint_handler():
#do tracking in sub-thread so we don't hold up the page
def handle_sub_view(req):
with app.test_request_context():
from flask import request
request = req
# Do Expensive work
thread.start_new_thread(handle_sub_view, (request))
return "Thanks"
수정 : 대화 목록의 컨텍스트가 원래 요청과 다르다는 점을 지적하는 것이 좋습니다. 스레드를 생성하기 전에 사용자 ID와 같은 흥미로운 요청 데이터를 추출해야합니다. 그런 다음 ID를 사용하여 하위 스레드에서 (다른) 사용자 개체를 가져올 수 있습니다.
참조 페이지 https://stackoverflow.com/questions/9931738
반응형
'파이썬' 카테고리의 다른 글
파이썬 Django 1.3 이하의 Django Admin에서 사용자 지정 필터 (0) | 2020.09.16 |
---|---|
파이썬 문자열 (변수)이 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.09.16 |
파이썬 Python에서 날짜 범위 만들기 (0) | 2020.09.16 |
파이썬 일반 Python 목록에 비해 NumPy의 장점은 무엇입니까? (0) | 2020.09.16 |
파이썬 Django 모델 관리자 objects.create 문서는 어디에 있습니까? (0) | 2020.09.16 |
댓글