2017-02-25 1 views
1

django-import-export을 사용하여 Django 관리자 사이트에 업로드 된 CSV 파일을 처리하고 있습니다.Heroku에서 django-import-export와 Tmpfile 오류가 발생했습니다.

내 로컬 컴퓨터에서 Django를 실행하면 정상적으로 작동합니다.

Feb 24 14:35:12 test-staging app/web.3: ERROR 2017-02-24 22:35:12,143 base 14 139687073408832 Internal Server Error: 
.... 
Feb 24 14:35:12 test-staging app/web.3: File "/app/.heroku/python/lib/python2.7/site-packages/import_export/admin.py", line 163, in process_import 
Feb 24 14:35:12 test-staging app/web.3:  data = tmp_storage.read(input_format.get_read_mode()) 
Feb 24 14:35:12 test-staging app/web.3: File "/app/.heroku/python/lib/python2.7/site-packages/import_export/tmp_storages.py", line 42, in read 
Feb 24 14:35:12 test-staging app/web.3:  with self.open(mode=mode) as file: 
Feb 24 14:35:12 test-staging app/web.3: File "/app/.heroku/python/lib/python2.7/site-packages/import_export/tmp_storages.py", line 31, in open 
Feb 24 14:35:12 test-staging app/web.3:  return open(self.get_full_path(), mode) 
Feb 24 14:35:12 test-staging app/web.3: IOError: [Errno 2] No such file or directory: u'/tmp/tmpvCUtrP' 

나는이 작업을해야처럼 내가 Heroku가 임시 저장에 대해, 보인다 수 있는지에 읽었 : 나는 Heroku가 내 응용 프로그램을 배포 할 때

나는 액세스를 TMPFILE 관련 오류를 받기 시작. heroku를 통해 내 코드로 heroku dyno에서/tmp 파일을 만들고보고 수정할 수 있는지 확인했습니다.

django-import-export에는 임시 파일 작성 메커니즘을 오버로드 할 수있는 모듈이 있습니다. 그러나 여기에 무엇이 잘못되었는지 (또는 오히려 왜/tmp/tmpvCUtrP가 생성되지 않거나 ' t 가시).

답변

2

django-import-export는 몇 가지 요청에서 서버로 가져 오기 프로세스를 분할합니다.

Heroku는/tmp에 공통 파일 시스템을 공유하지 않는 여러 dynos를 사용할 수 있습니다.

우연히 초기 요청에 dyno A가 있고/tmp/tmpfilename에 tmpfile을 만든 다음 나중에 dyno B에 요청할 수 있으며 django-import-export를 사용하려면/tmp/tmpfilename이 필요합니다. 하지만 그렇지 않습니다.

from import_export.tmp_storages import CacheStorage 

class CustomAdminForm(ImportExportModelAdmin): 
    tmp_storage_class = CacheStorage 
:

이 해결하기 위해 내가 장고 - 수출입에의 CacheStorage 임시 저장 방법을 전환

관련 문제