使用PyMongo将文件流式传输到MongoDB

时间:2014-03-12 08:12:58

标签: mongodb tornado pymongo gridfs

我尝试使用PyMongo和我在Tornado中编写的API将大文件上传到GridFS。由于文件大小为4.1GB,Tornado会抛出Content-Length too long

此方案适用于NodeJS和this module,但我不确定PyMongo是否支持文件流。

1 个答案:

答案 0 :(得分:1)

PyMongo支持将输入文件流式传输到GridFS,但Tornado不支持。见issue 231。尽管最初的问题报告已经过时,但有关Tornado邮件列表的传言表明,这将在接下来的几个小版本中得到修复。 (目前在Tornado 3.2。)当Tornado看到内容长度超过100MB时,它会引发您观察到的异常。

一个想法是使用Nginx为您的应用程序提供支持,并使用its file-upload module将用户的上传流式传输到临时文件中。 Nginx将在上传文件时告诉您的应用程序,然后您可以将临时文件流式传输到GridFS。在执行此操作时,请避免阻止Tornado进程,方法是生成子进程以使用PyMongo将文件复制到GridFS,或者使用Motor