프런트 엔드 호출로 실행되는 시간이 많이 걸리는 백 엔드 작업을 실행하려고합니다. 이 백엔드 작업은 완료 될 때 세마포어를 해제하는 콜백 메소드를 실행해야합니다. 프론트 엔드는 긴 프로세스가 끝나기를 기다릴 필요가 없습니다. 콜에서 응답을 얻으려면 작업을 시작해야합니다.파이썬 2.6에서 콜백 메소드를 비동기식으로 실행
이 문제를 해결하기 위해 다중 처리 라이브러리의 Pool 클래스를 사용하려고하지만 몇 가지 문제가 있습니다. 즉, 실제로 apply_async에 전달 된 메서드를 실행하는 유일한 방법은 apply_async 호출에서 반환하는 ApplyResult 객체에서 .get() 메서드를 호출하는 것입니다.
이 문제를 해결하기 위해 대상이 apply_result.get 인 Process 개체를 만들려고합니다. 그러나 이것은 효과가없는 것 같습니다.
내가 여기에 실종되었다는 기본적인 이해가 있습니까? 이 문제를 해결하기 위해 무엇을 제안 하시겠습니까? 사전에 도움을
p = Pool(1)
result = p.apply_async(long_process, args=(config, requester), callback=complete_long_process)
Process(target=result.get).start()
response = {'status': 'success', 'message': 'Job started for {0}'.format(requester)}
return jsonify(response)
감사 :
는 여기에 내가 지금 무엇을의 조각 예입니다!