새우를 사용할 때 렌더링/빌드 프로세스 전에 파일 스트림을 시작하는 예가 있습니까?렌더링 전 Prawn/Prawnto에서 출력되는 스트리밍
상황은 내 워크 스테이션에서 실행하는 데 약 60 초가 걸리는 350 페이지 정도의 보고서가 있지만 상황을 프로덕션 (EC2)으로 옮길 때 보고서 실행 시간이 300 초 이상 끝나면 PDF를 브라우저로 보내지 않습니다.
사용자 의견이없는 경우에도 60 초가 오래 걸리지 만 기다리는 경우에도 300은 작동하지 않습니다. 내가 한 일은 렌더링 과정 (적어도 Prawnto와 함께 .pdf.prawn보기를 사용하고 있습니다) 전에 파일 다운로드를 시작하여 적어도 사용자가 처리하는 동안 어떤 일이 일어나는 것을 볼 수 있도록하는 것입니다. 지금까지이 일을 할 수 없었다. 모든 예제와 가이드는 렌더링이 끝나고 기다린 후에 다운로드를 시작합니다.
그 밖의 모든 것이 실패하면 보고서 일정을 검토 하겠지만 이상적으로 사용자는 보고서를보고 변경 한 다음 다시 실행하여 분명히 허용하지 않을 것입니다.
실제로 Prawnto에서 보여줄 코드는보기의 모든 PDF 레이아웃이므로 제어기에서이 코드를 호출해야합니다. 나는 send_file을 시도해 보았고 Prawnto없이 PDF 레이아웃을 컨트롤러로 옮겨서 모든 변경 사항이 같은 결과를주는 것처럼 보였다. PDF는 오랜 기다림 후에 브라우저로 보내진다.
나는이 시점에서 아이디어가 없으므로 어떤 아이디어라도 고맙게 생각합니다.
respond_to do |format|
format.pdf {
prawnto :prawn => {:page_layout => :portrait, :skip_page_creation => true}, :inline => false
render :layout => false
}
아마도 레일스 2.3.9와 새우 0.11.1.pre와 함께 프로덕션을 위해 승객을 사용하고 있습니다. – ChriX
300 초가 넘는 시간에 PDF를 스트리밍하는 것이 300 초 대기 시간보다 훨씬 더 효과적인지 확신 할 수 없습니다. 사용자가 비동기 보고서 생성을 트리거 한 다음 완료되면 사용자에게 전자 메일 알림을 보낼 수 있습니까? 또는 30-40 페이지 정도의 그룹으로 "덩어리 (chunk)"하고 한 번에 한 부분 씩 생성하는 옵션을 사용자에게 제공 할 수 있습니다. –