브라우저에 www.xxx.xx/stopwork를 입력하면 z 프로세스를 종료하고 싶습니다. 내가 시도Flask, 어설 션 오류
는 : - 프로세스가 중지됩니다 예상대로
@app.route('/dowork',methods=['POST'])
def dowork():
...............
def workit():
...................
z = Process(target=workit)
z.start()
@app.route('/stopwork', methods=['POST'])
def stopwork():
z.terminate()
return redirect('/')
return redirect('/')
그것은 작동합니다. 그러나 브라우저에서/dowork를 다시 호출하려고합니다. dowork는()를 다시 시작,하지만 난 브라우저에 오류가 있습니다
내부 서버 오류 서버에 내부 오류가 발생하여 요청을 완료 할 수 없습니다
합니다. 서버가 과부하되었거나 응용 프로그램에 오류가 있습니다.
그리고 응용 프로그램에서 오류 : % 엔드 포인트) AssertionError를 :보기 기능 매핑 기존 엔드 포인트 기능을 덮어 쓰기한다 : '%의 기존 엔드 포인트 기능'
stopwork설정하는 방법이 있나요 z.terminate가 실행 된 후 끝 점이 공백으로 표시됩니까? 따라서 나중에 덮어 쓰기가 발생하지 않습니다.
무엇이'def (workit)'입니까? 'def dowork()'안에 있습니까? – ettanany
나는 편집했다. 이제는 더 분명해질 것입니다. 예, dowork() 안에 있습니다. 보시다시피 workit()은 프로세스가됩니다. – Lucas
들여 쓰기가 잘못 되었기 때문에 코드를 따라하기가 어렵지만 어딘가에 함수 호출 안에서'@ app.route ('/ stopwork', methods = [ 'POST'])'가 있습니다. 라인을 처음 실행하면 엔드 포인트가 등록됩니다. 두 번 실행하면 엔드 포인트를 다시 등록하려고 시도하고 실패합니다. dowork와 동일한 레벨에서'stopwork'을 정의해야합니다. 그러면 단 한 번만 끝점을 등록하십시오. – dirn