2014-03-12 3 views
0

PyMongo와 Tornado에서 쓴 API를 사용하여 GridFS에 큰 파일을 업로드하려고합니다. 파일 크기가 4.1GB이기 때문에 토네이도는 Content-Length too long을 던졌습니다.PyMongo를 사용하여 MongoDB에 파일을 스트리밍

이 시나리오는 NodeJS 및 this module에서 작동하지만 PyMongo가 파일 스트리밍을 지원하는지 확신 할 수 없습니다.

+1

현재 귀하의 토네이도 구현에 문제가있는 것 같습니다. 업로드 부분을 작업하기위한 초보자와 비교할 수있는 요지가있었습니다. https://gist.github.com/nephics/1134964 그런 다음 게시물에 코드가 도움이 될 것입니다. –

답변

1

PyMongo는 GridFS에 대한 입력 파일 스트리밍을 지원하지만 Tornado는 지원하지 않습니다. issue 231을 참조하십시오. 원래의 이슈 보고서는 오래되었지만 토네이도 메일 링리스트의 소문에 따르면 다음 몇 가지 부 릴리스에서는이 문제가 해결 될 것이라고합니다. (현재 토네이도 3.2에 있습니다.) 토네이도가 100MB를 초과하는 콘텐츠 길이를 보게되면 예외를 발생시킵니다.

하나의 아이디어는 응용 프로그램을 Nginx로 시작하고 its file-upload module을 사용하여 사용자의 업로드를 임시 파일로 스트리밍하는 것입니다. Nginx는 파일이 업로드 될 때 응용 프로그램에 알리고, 그러면 임시 파일을 GridFS로 스트리밍 할 수 있습니다. Tornado 프로세스가 PyMongo를 사용하여 GridFS에 복사 할 하위 프로세스를 생성하거나 Motor을 사용하여 차단하는 것을 피하십시오.

+0

나도 도움이 될만한 Motor http://motor.readthedocs.org/en/latest/examples/gridfs.html을 발견했다. – ivica

관련 문제