2016-09-03 3 views
0

CSV 파일을 가져 와서 그에 따라 레코드를 업데이트하는 가져 오기 기능이 내 레일 앱에 있습니다. 이 파일이 커짐에 따라 요청은 더 오래 걸리고 결국 시간 초과됩니다. 따라서 장기 실행 요청을 처리하기 위해 delayed_job을 구현하기로했습니다. 문제는 작업이 실행될 때 Errno::ENOENT: No such file or directory이라는 오류 메시지가 발생한다는 것입니다. 이는 내 솔루션이 메모리의 CSV 파일과 작동하기 때문입니다.지연된 작업 가져 오기를 위해 heroku에 파일을 임시 저장하는 방법

내 heroku 서버에 CSV 파일을 저장하고 가져온 후 삭제하는 방법이 있습니까?

답변

1

Heroku의 파일 시스템은 일시적입니다. 즉, 파일의 내용이 지속되지 않으며 다이노스에서 공유되지 않습니다.

지연된 작업이 다른 dyno에서 실행중인 경우 (이미없는 경우), 웹 dyno의 디스크에있는 csv에 액세스 할 수 없습니다.

한 가지 해결 방법은 CSV를 제공하는 작업을 만드는 것입니다. 그런 다음 작업이 시작되기 전에 일부 HTTP 라이브러리를 사용하여 CSV를 다운로드 할 수 있습니다.

+0

감사합니다. 다른 해결 방법을 생각해 냈습니다. CSV 파일을 테이블에 저장합니다. 지연된 작업은 CSV 대신 테이블에서 실행됩니다. – stoerebink

1

dyno의 파일 시스템에 파일을 저장하고 다른 dyno에서 파일을 읽을 수 없습니다.

AWS S3과 같은 외부 클라우드 저장소에 임시 파일을 저장하고 지연된 작업에서이 파일을 읽을 수 있습니다.

관련 문제