2014-03-12 36 views
0

我想使用PyMongo和我在Tornado中编写的API上传一个大文件到GridFS中。由于文件大小为4.1GB,Tornado引发Content-Length too long使用PyMongo流文件到MongoDB

这个场景适用于NodeJS和this module,但我不确定PyMongo是否支持文件流。

+1

您目前在您的Tornado实施中似乎有问题。有一个Gist你可以比较作为首发,让上传部分工作https://gist.github.com/nephics/1134964当你有这个后,你的代码在帖子中将是最有帮助的。 –

回答

1

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

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

+0

我还发现Motor http://motor.readthedocs.org/en/latest/examples/gridfs.html哪些应该可以帮到我。 – ivica

相关问题