Tornado是一个用python写的小巧的开源网站服务器。安装来玩了一下,的确很强大,响应速度很快!这东西是Facebook开发的,但奇怪的是官网 http://www.tornadoweb.org/ 的IP查出来却是Google的呢,难怪连华工的校园网也能连上了。
花了一晚时间,写了如下的一个Web相册,用来分享照片给同学 🙂 可见开发效率之高,o(∩∩)o…哈哈,代码量也很少。
界面简简单单的,功能挺实用。
目录浏览功能:
幻灯片浏览功能:
帅吧!!!
我在服务器上也跑了一个tornado,可以用来浏览我的博客的图片。
这东西应该还有各种bug的,欢迎指出 😀
最后,上代码: Tornado Web Photo Gallery
代码没放在线仓库里?
tornadoweb.org 是在 GAE 上的,有段时间因此而墙内不能访问。
Perfect!
这个相册挺不错,不过我的服务器只支持php,我更期待php的….
= =PHP版写起来很容易啊很快写完,不过熟悉tornado后开发效率应该更快
等着你的php版本,呵呵
我对编程没有多少了解,到了大学得向你好好学习。
对了,你应该大学毕业了吧?
我高三学生,小虾应该还没大学毕业哈哈哈
tornadoweb.org用google的开源平台了吧
嗯,的确是这样的。网站放在app engine上了。
1.肖像权(/tx);
2.感觉没有评论功能的相册是不够强大的,不过应当是可以用wordpress的模板
话说,我这个相册是不支持数据库功能的~
小虾,是不是考虑搞一个中国版的图片社交软件?
哇!有哪个网站可以模仿吗?
picasa? facebook? flickr?
flickr吧。。嘿嘿 这个感觉最好看了。。其他的UI怎么不习惯。。
FACEBOOK不是刚收购了一个吗?就是图片社交,我们中国这边手机端的图片社交还没有呢
20岁的年轻小伙啊,哈哈。
有兴趣你可以顺便研究下它的安全性。。。。
小虾,我想请教一下,像缩略图http://gallery.xiaoxia.org/preview/small/upfiles/2011/02/12-150×150.jpg?v=1298578197后面的跟的v=xxxxxx主要用途是什么?
请赐教,O(∩_∩)O谢谢~~
哈,v是代表图片的版本号,通过图片内容算出来的。
因为图片数量很多,虽然现在浏览器都有缓存,但是默认都会发送请求来询问服务器文件是否改变,然后服务器发送304说Not Modified,其实很麻烦。
现在服务器的回应头设置了图片缓存一年,也就是说这个缩略图会在浏览器缓存起来,你浏览下一个页面的时候,浏览器只不会再发送这个图片的获取请求,除非url发生改变,例如这个v的值发生改变,否则缓存是不会变更的。
所以这样做能够加快网页加载速度,也减轻服务器的负担。
啊啊,原来还可以这样啊~~~学习了~
谢谢~~
为了验证一下,你可以在调试器里看看,浏览一个刚才浏览过的页面,就会发现只请求一个网页连接,一瞬间全部图片都出来了。
tornado要怎么开启gzip啊?我试了,用nginx反向代理tornado,还是没开启gzip。
小虾,代码放在github上吧:)
嗯,我有这个打算! 你是指这个的代码还是指我所有开源东西的代码呢?
开源的放在github上,不愿意开源的可以放bitbucket。
保证代码的安全,而且版本管理很有用,将来找实习或者找工作时,一个github账号胜过一份长长的简历。
好!我过段时间空闲了,就整理我所有的代码 🙂
请教一下,我使用python2.6 ./server.py遇到中文的目录不会出问题。但如果是nohup python2.6 ./server.py >./log.txt 2>&1 &这样,访问中文目录,就会出现:
ERROR:root:Uncaught exception GET /gallery/%E5%AE%9D%E5%AE%9D (220.178.24.166)
HTTPRequest(protocol=’http’, host=’actself.me:8888′, method=’GET’, uri=’/gallery/%E5%AE%9D%E5%AE%9D’, version=’HTTP/1.1′, remote_ip=’220.178.24.166′, body=”, headers={‘Connection’: ‘keep-alive’, ‘Accept-Language’: ‘zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4’, ‘Accept-Encoding’: ‘gzip,deflate,sdch’, ‘Referer’: ‘http://actself.me:8888/gallery/’, ‘Host’: ‘actself.me:8888’, ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8’, ‘User-Agent’: ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36’})
Traceback (most recent call last):
File “/usr/lib/python2.6/site-packages/tornado/web.py”, line 987, in _execute
getattr(self, self.request.method.lower())(*args, **kwargs)
File “/var/www/photos.actself.me/handler/gallery.py”, line 31, in get
print “get”, path, ‘from’, self.request.remote_ip
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)
ERROR:root:500 GET /gallery/%E5%AE%9D%E5%AE%9D (220.178.24.166) 1.71ms
请问小虾这是喂神马?
哦。我添加了
reload(sys)
sys.setdefaultencoding(‘utf8’)
后解决了。
Linux系统吗?
是的。
可否给加个友链?
PR多少呢~~
最近两天,我也在学习tornado,恰好看到了你的这篇文章,看了下代码,发现当图片为中文时候,图片显示不出来,原因是你在处理get()时候,中文名字没有encode。稍微修改下应该就可以了。当然这篇文章已经好久了。我看评论里没人指出。
顺便说,我不会CSS,我把你的CSS拿来用了哈。
好久之前的习作了,现在我更喜欢用flask框架,因为扩展性更好,所以直接用 flask-bootstrap来写。