前几天在服务器文件传输文件的时候,遇到了一些恶心的事情…    很多时候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的文件,所以在打包和解压的时候,遇到了些问题。

地址如下:

关于安装

运行的方法

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

下载的方法

下面是浏览器的截图…


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


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



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

发表评论