2014-03-12 54 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

相關問題