2016-09-03 3 views
0

CSVファイルをインポートしてそれに応じてレコードを更新する、私のレールアプリにインポート機能があります。このファイルが大きくなると、要求が長くなり、最終的にタイムアウトになります。そのため、私は長期実行リクエストを処理するためにdelayed_jobを実装することを選択しました。唯一の問題は、ジョブが実行されるときに、エラーメッセージErrno::ENOENT: No such file or directoryがスローされることです。これは私のソリューションがメモリ内のCSVファイルで動作するためです。遅延ジョブのインポートのためにherokuにファイルを一時的に保存する方法

私のherokuサーバーにCSVファイルを保存する方法はありますか(インポート後に削除する方法)?

答えて

1

Herokuのファイルシステムは一時的です。つまり、それらのコンテンツは永続的ではなく、それらはdynosで共有されません。

あなたの遅れの仕事は、あなたのWebダイノのディスク上に存在するCSVにアクセスすることはできません(それがまだない場合、それはどのようにすべきである)別のダイナモ上で実行されている場合。

回避策の1つは、CSVに対応するアクションを作成することです。その後、ジョブが開始される前に、いくつかのHTTPライブラリを使用してCSVをダウンロードすることができます。

+0

ありがとうございました。私は他の回避策を考え出し、CSVファイルをテーブルに格納しました。遅延ジョブは、CSVではなくテーブル上で実行されます。 – stoerebink

1

あなたはダイノのファイルシステム上のファイルを格納して戻って別のダイノからそれらを読むことができません。

AWS S3のような外部のクラウドストレージに一時ファイルを保存し、遅延したジョブからこれを読み取ることができます。

関連する問題