用python开发比SimpleHTTPServer更好的文件服务器 [上传下载]

前几天在服务器文件传输文件的时候,遇到了一些恶心的事情…    很多时候scp和rsync是没有打通免密钥的,每次输入我那密码,很是费劲。  我相信大家也会经常用SimpleHTTPServer来下载文件,他性能不好,接口是堵塞的,同时只能一个人下来。   另外有时候,某个节点他没有外网,他不能用SimpleHTTPServer文件服务,只能是推送?   这时候怎么办?   当然办法有很多,我这边的方法比较简单,用我的linode日本节点做了一个文件服务器,可下载和上传,是nginx lua的配合。  但毕竟每次都经过日本的节点实在是麻烦,在机房内部搞的话,我没有root权限,所以配置不了….   


然后我就用tornado写了一个文件服务器,tornado是个异步的网络框架,他在做文件服务器的时候,性能要比SimpleHTTPServer强点,另外我还适配了一个简单的html页面,可以在页面上直接上传文件和下载。

关于python实现文件服务,解决服务器之间的上传下载传输问题,原文地址  http://xiaorui.cc/?p=1844

http://xiaorui.cc/2015/08/09/%E4%BD%BF%E7%94%A8python%E5%BC%80%E5%8F%91%E6%AF%94simplehttpserver%E6%9B%B4%E5%A5%BD%E7%9A%84%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/

这fileporter的代码已经放在github上了 ,同样在pypi源也推送了。只是在pip install fileporter的时候,遇到了些问题。 以前在pypi也提交过不少的模块,但基本是关于纯python的代码,但这次会含有html的文件,所以在打包和解压的时候,遇到了些问题。

地址如下:

https://github.com/rfyiamcool/fileporter 

https://pypi.python.org/pypi/fileporter/1.7

关于安装




git clone git@github.com:rfyiamcool/fileporter.git
cd fileporter;python setup.py install

或者.

pip install fileporter

运行的方法





[ruifengyun@devops fileporter ]python fileporter.py 9090
INFO:root:Serving HTTP on 0.0.0.0 port 9090 ...

and ,same as SimpleHTTPServer method

[ruifengyun@devops ~ ] python -m fileporter.server 8080
INFO:root:Serving HTTP on 0.0.0.0 port 8080 ...

你可以打开浏览器去下载上传,也可以直接用curl来进行上传,如果是python可以用requests来实现文件上传。 

curl -F "file=@app.py" http://127.0.0.1:9090/

下载的方法

curl -O http://127.0.0.1:9090/app.py

下面是浏览器的截图…


关于tornado在做文件服务器下载上传的性能,我还没有做过测试。 但是直接不会很强,以前在做tornado技术方案的时候,都会用nginx location做文件下载。 


现在还差一个客户端,支持断点续传和多线程下载的。 python的多线程下载算是好实现,通过http的206获取文件大小,然后截取下载,最后合并罢了。 


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注