随笔分类 -  E Django, Python

Django, Web
Google Appengine 的自动部署脚本
摘要:你是否在appengine上注册了N个应用?每次代码更新都很痛苦?!在我痛苦了很久后,总算找到一种可以自动部署方式,并写成了脚本,共大家分享deploy.py#!/usr/bin/env python# -*- coding: utf-8 -*-# 将 {project_name} 替换成你的项目目录# 将 {password} 替换成你的密码文件# 将 {email} 替换成你的emailimport sysimport osimport urllib2def deploy(no): tpl = open('app.yaml', 'rb') try: tpl_ 阅读全文

posted @ 2011-03-26 02:15 MK2 阅读(1723) 评论(3) 推荐(1) 编辑

让python的Cookie.py模块支持:冒号做key
摘要:虽然Cookie的标准是不允许:冒号出现在key里面的,但是我们的开发人员是很可爱的,常常会让我们意想不到。为了做好兼容性,只能选择兼容:冒号。很简单,修改一下Cookie.Morsel#!/usr/bin/python# -*- coding: utf-8 -*-"""MorselHookfix Cookie.CookieError: Illegal key value: ys-tab:entrance:e"""import Cookieimport string_Morsel = Cookie.Morselclass Morsel 阅读全文

posted @ 2010-11-19 15:54 MK2 阅读(1094) 评论(0) 推荐(1) 编辑

搜狐微博的oauth
摘要:最近拿到了搜狐微博(t.sohu.com)的oauth开发key,本想做个oauth登录的,可是发现在发中文微博的时候,总是提示401认证不通过:{"code":401,"error":"This method requires authentication.", "request":"/statuses/upload.json"}。然后我试着发全ASCII码的微博,竟然可以发成功。这样就定位到有可能是我用的utf-8编码有问题,于是尝试了个种中文编码gb2312, gbk 还有更多其他编码,都 阅读全文

posted @ 2010-11-03 09:50 MK2 阅读(1632) 评论(1) 推荐(2) 编辑

让python json encode datetime类型
摘要:python2.6+ 自带的json模块,不支持datetime的json encode,每次都需要手动转为字符串,很累人,我们可以自己封装一个简单的方法处理此问题.实现代码如下:import jsonfrom datetime import date, datetimedef __default(obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%dT%H:%M:%S') elif isinstance(obj, date): return obj.strftime('%Y-%m-%d' 阅读全文

posted @ 2010-10-23 18:20 MK2 阅读(2758) 评论(0) 推荐(1) 编辑

django接入新浪微博OAuth
摘要:最近将网站和新浪微博进行了整合,思路很简单,就是将页面内容和新浪微博联系起来,一个独立内容的页面对于一条微博,自然评论系统只需要使用微博的评论即可。然后,用户需要发表评论的话,肯定要接入oauth,不可能让用户登录你的网站来发评论吧?没有谁会将自己的账号和密码告诉你的。查看了新浪微博的授权机制,然后下载了python版的sdk,就可以在django上接入oauth了。对于oauth很陌生的同学,请先查看OAUTH协议简介其实流程很简单:getrequesttoken -> createauthurl -> [user_login: 跳转到新浪登录页面,用户登陆后会跳转回来] -&g 阅读全文

posted @ 2010-09-27 17:51 MK2 阅读(6295) 评论(2) 推荐(4) 编辑

编译安装M2Crypto-0.20.2
摘要:最新需要用到RSA对称密钥加密,所以需要用到M2Crypto,可怜的我发现编译这东西一点都不容易,以下是我的杯具经验总结。服务器环境$ lsb_release -aLSB Version::core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarchDistributor ID:RedHatEnterpriseASDescription:Red Hat Enterprise Linux AS release 4 (Nahant Update 4)Release:4Codename:NahantUpdate4下载M2Cry 阅读全文

posted @ 2010-09-21 17:47 MK2 阅读(7311) 评论(0) 推荐(2) 编辑

async_memcache for tornado
摘要:tornado 是一个纯python 实现的非阻塞web服务器,自带了异步httpclient,可以异步请求http网络资源。在实际应用中,我们常常需要访问memcached等资源,发现官方并没有具体实现memcache异步客户端,但是tornado留出了ioloop让我们很容易就可以实现异步的socket网络访问。于是参照memcache的通信协议,我简单实现了一个异步socket的memcache客户端。使用示例源代码下载: async_memcache.pyif __name__ == '__main__': client = MemcacheClient('lo 阅读全文

posted @ 2010-09-16 00:02 MK2 阅读(1374) 评论(0) 推荐(1) 编辑

让apt-get的自动补全打开
摘要:$ vi ~/.bashrc# enable programmable completion features # (you don't need to enable this, if it's already enabled in # /etc/bash.bashrc and /etc/profile# sources /etc/bash.bashrc).if [ -f /etc/bash_completion ]; then . /etc/bash_completionfi若发现/etc/bash_completion文件不存在, 则安装bash-completion$ s 阅读全文

posted @ 2010-08-22 17:01 MK2 阅读(2971) 评论(0) 推荐(1) 编辑

myconnpy, myconnpy + psyco与MySQLdb简单性能测试对比
摘要:测试用例修改自:myconnpy appears to be roughly an order of magnitude slower than MySQLdb ,在它的基础上,还加入psyco优化后的性能对比测试代码:[代码]获取10行数据:myconnpy 2.53226113319MySQLdb 0.572678804398myconnpy with psyco 1.79596400261获... 阅读全文

posted @ 2009-11-20 09:22 MK2 阅读(1454) 评论(0) 推荐(0) 编辑

(myconnpy出现,pymysql可以入冷宫了)打个小补丁,让pymysql正确处理日期类型和NULL类型
摘要:使用完善的myconnpy吧!以下可以忽略!pymysql是个不错的纯python实现的mysql api,获取源代码执行一些测试发现有一些bug,目前发现的是无法处理日期和NULL,调试了一些,对connections.py进行了3处修改,测试代码就运行起来了,还有converters.py也有bug,下载 " Issue 3: undefined methods datetime_or_No... 阅读全文

posted @ 2009-11-19 19:38 MK2 阅读(3520) 评论(0) 推荐(0) 编辑

让数据库操作变成非阻塞的
摘要:即使使用了类似tornado这样的非阻塞io web服务器,能让我们的web性能提供很多,但是在实际应用中与测试的效果相差很远,应该是说我们的测试考虑非常不全面。现在的web应用几乎不可能少了数据库访问操作,而数据库访问操作却是阻塞的, 如MySQLdb,显然,类似tornado,stackless这些协程方式编写的web,性能会受到大大的制约。解决方案:让数据库操作变成非阻塞的eventlet中... 阅读全文

posted @ 2009-11-18 14:56 MK2 阅读(1804) 评论(0) 推荐(0) 编辑

Ubuntu下安装Tokyo Cabinet和Tokyo Tyrant, 并测试pytyrant
摘要:Tokyo Cabinet: 下载 http://1978th.net/tokyocabinet/tokyocabinet-1.4.36.tar.gz依赖包:zlib: sudo apt-get install zlib1g-devbzip2: sudo apt-get install libbz2-dev安装:tar zxvf tokyocabinet-1.4.36.tar.gzcd tokyo... 阅读全文

posted @ 2009-11-05 11:57 MK2 阅读(1576) 评论(0) 推荐(1) 编辑

Tornado JSONPHandler, 支持JSONP的请求封装
摘要:由于JSONP强大的跨域访问功能,发现tornado没有对jsonp的默认支持,还好tornado是开源的,就简单实现了一个JSONPHandler,对一切JSONP请求进行封装。JSONPHandler实现代码如下:只需要对finish方法进行简单封装,即可[代码]测试代码:main.py[代码]index.html[代码]测试结果:浏览器访问: http://www.client.com:80... 阅读全文

posted @ 2009-11-05 08:51 MK2 阅读(2373) 评论(0) 推荐(1) 编辑

纯python实现的web: tornado性能测试
摘要:测试环境:服务器配置: 4 x Intel(R) Xeon(R) CPU E5405 @ 2.00GHz, 4G内存, 操作系统: CentOS 5.3 x86_64nginx前端 + 4 tornado(0.2) web processtornado: http://www.tornadoweb.org (已被墙)测试场景: http get请求,服务器端直接返回"hello world"代码及... 阅读全文

posted @ 2009-10-28 16:49 MK2 阅读(15487) 评论(4) 推荐(4) 编辑

随想数据的统计与分析
摘要:最近拿到一大堆数据,在对其做完MapReduce统计后,需要提炼一些有价值的数据出来使用。1. 同一数据重复出现,是否大堆一定概率或者重现数量达到某个范围,就能确定该数据是有效的呢?2. 数据的时间有效性。若这组数据是跟时间相关的,时间这个参数是否需要考虑进去,具体的时间参考值又需要如何定义呢?3. 随机出现的干扰数据,是否也有一些规律性呢?一旦这些干扰数据消失,是好事还是坏事呢?4. 海量数据统... 阅读全文

posted @ 2009-08-20 00:20 MK2 阅读(490) 评论(0) 推荐(1) 编辑

结合nginx的内嵌perl-module,实现高性能的web静态化
摘要:到底web服务器的极限是多少呢?100 r/s? 500 r/s?还是1000 r/s?在StaticGenerator上看到,原来1000 r/s都不算什么.真的是这样吗?如果是真的那就太恐怖了。目前的web基本上都是动态的,为了提高性能,我们常常会使用各种各样的手段优化,例如减少IO,合理的字符串使用和操作,memcached等等。但是尽管全部优化都做足了,全动态的web点击率以是在1000 ... 阅读全文

posted @ 2009-04-25 16:48 MK2 阅读(2576) 评论(4) 推荐(0) 编辑

tenjin - 号称全球最快的模板引擎
摘要:Tenjin, "Tenjin is a very fast and full-featured template engine available in several script languages."官方的测试结果: 也快得太夸张了MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB Language Template Engine Test#1(sec) Test#2(sec) Python(2.5.1)pyTenjin (0.6.1)6.965.61Cheetah (2.0)20.3619.82Django 阅读全文

posted @ 2009-03-22 12:52 MK2 阅读(3707) 评论(2) 推荐(0) 编辑

Python tips: 装饰方法实战:类型校验装饰器和锁同步装饰器
摘要:在看PEP-0138时无意发现,就萌生起自己实现一个类似的装饰器的念头,毕竟这个装饰器确实很好用。其中accepts和returns是在原有的基础上进行改造的,详细可以查看代码[代码]使用举例:若accepts与其他任何装饰器同时使用的话,必须将accepts放到最内层,要不然,会导致参数校验异常.[代码]PS: synchronized 装饰方法在python2.5 + 可以使用with语法来代... 阅读全文

posted @ 2009-02-08 12:27 MK2 阅读(1174) 评论(0) 推荐(0) 编辑

subprocess.Popen() 必须加上close_fds=True
摘要:今天在做一个web页面控制memcached重启的功能,本以为非常简单,不就获取pid,然后kill,在重新启动memcached就这么简单。没想到使用subprocess.Popen() 来调用命令时竟然发现response确实是返回到客户端了,但是服务器端和客户端的http连接竟然还连接着,一直不断。查看了一下python的文档,发现:http://docs.python.org/librar... 阅读全文

posted @ 2009-02-06 15:15 MK2 阅读(7408) 评论(2) 推荐(1) 编辑

web服务优化感叹
摘要:最近在做一些很简单的web请求优化,web端的逻辑非常简单,就是接收用户POST上来的数据,并保存到数据库,和处理用户的GET查询请求。web服务器:Ubuntu + Lighttpd + fastcgi + django,数据库使用mysql 5.0为了达到海量用户并发访问的要求,几乎所有代码都尽可能简单地写,参数校验都几乎没有做。连接池、精简版的memcached,精简版的django等等,p... 阅读全文

posted @ 2009-02-03 15:14 MK2 阅读(879) 评论(0) 推荐(0) 编辑