요청을 죽이고 :SEND_DATA이 큰 파일을 보낼 수 없습니다 - 30 초 후에, 나는이 코드 라인 유니콘의 nginx에 레일 응용 프로그램을 /이
format.csv { send_data Test_Model.to_csv, stream: 'true', filename: "assets-#{DateTime.now.strftime('%Y%m%d%H%M%S')}.csv" }
문제는 -에 의해 생성 된 파일을 내 to_csv 메서드는 큰 측면에, 2.4 MB - 내 응용 프로그램에 대한 SQL 쿼리을 통해 그것을 생산하는 데 오랜 시간이 걸립니다 ... 그리고 그 longness 내가 변경할 수있는 뭔가가 아닙니다.
어쩌면 1 회 10, 내가 나올 파일을받을 수 있나요 :
그래서 다음 시간의 90 %는 내가 얻을 내 기능을 호출합니다. 그러나 요점은 ... 이것을 생성하고 send_data를 통해 전송하는 것은 엄청난 용도가 될 것입니다.send_file에 대한 이야기가 있습니다. 그러나 send_file은 이미 생성 된 파일의 파일 경로를 필요로합니다. 이 경우 send_data를 사용하여이 데이터를 동적으로 만들고 싶습니다. 가능하다면 send_data에서이 파일을 푸시하고 싶습니다. 심지어 파일을 생성하는 데 30 초 이상 걸린다고해도 가능합니다.
UPDATE는
그래서 내 응용 프로그램의 종류 "시간 초과"및 30 초에서 먼지를 문다. 어딘가 타임 아웃 설정과 같이 끔찍한 소리가납니다. 나는 궁금하다 - send_data 타임 아웃이 유니콘 conf 또는 일반 레일 conf에 설정 되었는가? send_data과 관련된 제한 시간을 어떻게 조정할 수 있습니까?
더 큰 파일을 보내는 데는 아무런 문제가 없습니다 (2.4 MB는 그리 크지 않습니다). 어떤 서버를 사용합니까? 'curl -I http : // yourpath'로 테스트하고 출력을 게시 할 수 있습니까? 일반 네트워크 브라우저의 오류로 인해 문제가 숨길 수 있습니다. – 23tux
csv 데이터를 생성하는데 얼마나 걸립니까? – 23tux
@ 23tux 생성하는 데 몇 초가 걸립니다. 대략 15-30 초. – PinkElephantsOnParade