分布式异步任务队列 Celery + rabbitmq (or redis )

当我们需要处理一些比较耗时的任务时,我们就需要考虑启用“异步”这个概念。
比如以下两种情况:

一,频繁读写
比如说,现在你一条“微博”,如果是使用 push 的机制,那则需要将这条“微博”告知所有关注你的人。
(这里是假设。实际的微博是使用推拉结合的方式)
关注你的人是100,则 insert 100次。
假如你是个大V,关注你的人有100000人,则需要 insert 100000次。
如果使用同步的方式,那恭喜你,你发完一条微博,这个时间够你喝杯咖啡了。

二,使用“不可靠”的服务
这里的不可靠,指的并不是它不能使用,而是指它不稳定。
当你调用第三方的短信接口,app push接口,无法预计调用接口的时间,这次调用,可能使用0.01s,但下次则变成3s。
这在生产环境是完全可能发生的。高并发,网络异常都可能造成这种情况。

如果这个任务不需要及时返回结果,那我们就可以将这些任务丢给后台去处理,某些实时性要求比较高的任务,还是只能同步进行。
常规的使用场景:短信服务、图片处理服务、群发email、第三方接口调用。 继续阅读分布式异步任务队列 Celery + rabbitmq (or redis )

python 2.7 + django 环境配置。

首先,安装python 2.7.4 。 (可能linux服务器已经自带python2.4~4.6环境,我们做版本共存)

安装过程,可能提示一些包没有安装。比如 gcc automake 之类的。
我们先安装必备的一些东西,我这是centos 6.3的系统。

下载最新的 python 2.7.4 进行安装。

安装完python,建议安装easy_install 和 pip。

同时安装easy_install 和 pip 是因为 pip的管理功能更强大 。比如安装 PIL 时会提示错误。

安装 django

安装 PIL

#pip install PIL 这样是安装不了PIL的, 64位 系统的问题。
使用源码安装

可能会提示以下错误

修改setup.py:

Tengine (基于nginx) 开源WEB服务器 安装指南

tengine

简介

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

当前Tengine的版本是:1.4.4
MD5: b5c75bca115e62f8ce0fafc37382e272

1. 安装 Tengine 。

在终端执行以下命令:

如果安装成功,就会出现:

Tengine version: Tengine/1.4.4 (nginx/1.2.7)

这说明你的Tengine 版本是1.4.4.它是基于 nginx1.2.7 构建的。

新浪SAE的elfinder文件管理器。

前端使用的是elfinder的界面和js,原先是没有中文的,自己做了一下zh_ch的翻译。
后端的PHP基本都重写了,自己写了一个SAE不支持本地I/O读写,只能用storage处理。

文件管理器FOR SAE 猛击这里试试

实现功能:
1.上传文件。
2.文件预览。
3.添加/删除/重命名文件。
4.添加/删除/重命名文件夹。(SAE的storage不是基于目录的,只是看起来很像目录结构,现在重命名非常麻烦,需要遍历该“目录”的所有文件,读取,写入另外的文件名,然后删除旧文件。不清楚微盘这样的存储是怎么实现重命名的)

未实现功能:
1.图片缩略图。
2.整合到elRTE编辑器。(JS需要修改,无法将图片引入编辑器。DEMO,使用demo/demo登录)

新年总结,还有附一个YII框架部署到 新浪 SAE 平台.

最近这段时间比较忙,忙着换工作,忙着自我提高.
也许人比较浮躁,什么东西都想折腾一下.结果到现在一个能拿得出手的东西都没有..
哈哈.
去年(前年?)发布过yiicms1.0,后来有些朋友跟我提及用yiicms做了二次开发,挺感慨的.
因为后来,YIICMS偷偷做了改版,后台用了独飞那个dwzinterface扩展,基于dwz的jquery的js框架,UI上是美观了点.
但是作为一个程序员,还是觉得1.0版本的yiicms界面比较简洁,速度也够快,没有那么多js.
之前由于某种原因,把google code上的托管的yiicms删掉了,有空会把两个版本再放回去.

差点忘记说了,还有个yiisns,也是以前在练yii的时候折腾出来的有亲爹没娘养的东西,现在人人都去搞微薄,搞团购去了.

年前的时候,研究了一下nodejs,看一下palm的webos开发(现在,palm被HP收购了,自己拿着的手机也可以说是HP,不怕被人说是山寨货=_=).
原来雄心勃勃想折腾一个飞信,唉… 后来在google上找到一个python的pyfetion又翻了翻代码. 什么都没做.

最近又看了几本关于产品经理的书,有王坚的<<结网>>, 苏杰的<<人人都是产品经理>>,又爱上了研究产品,把写文档当成一种乐趣.
有空的时候还上上”褪墨”,找一些关于GTD的资料,职业规划,习惯养成的东西.
=================================================================

http://yiis.sinaapp.com/

配置检查 http://yiicms.sinaapp.com/yii1.1/requirements/
BLOG DEMO

新浪的SAE,之前也稍微关注了一下,但那时候有”两个不支持”,这个也不支持,那个也不支持.
不过,随着技术的越来越完善,很多东西也能够很方便的迁移过去. 比如YII的框架,折腾了几天,终于弄出个可以运行的BLOG DEMO了.

由于数据安全性等原因,SAE不支持本地写入文件.但是SAE提供了Tmpfs临时文件和Wrapper两种方式来解决这个问题.

SAE对I/O处理做了限制,说一下遇到的几点问题,
1.YII的assets机制,现在这部分是保存在Storage中,查了不少文档,调用SAE的类来COPY文件
2.protect/runtime, 这部分保存为Tmpfs.
3.cache,稍微改了一下CMemcache,使用SAE的memcache_init();

这里面,还有许多性能问题,有待解决.有空再继续.

2010国庆回顾

即使不说,我也知道我变了。
我以前说自己很宅,你可能不信。
现在我说以前的我真的是宅,连自己也不信了……

  • 9.30 东北烤肉,欢乐颂,乐巢
  • 10.1 下午泊客三国杀,COCOPARK吃晚饭,美食广场三国杀。依然KTV
  • 10.2 下午占美三国杀。共享出冰淇淋。
  • 10.3 下午东方花园羽毛球。………………想不起来做过什么。
  • 10.4 启程江门开平碉楼群,早上 自立村和立园,午饭煎豆腐+煲仔饭。下午酒店玩升级,晚餐牛肉丸
  • 10.5 马降龙,锦江里,下午回归深圳,傍晚台球1V2。晚上国贸湘菜。提前帮天堂庆祝生日。
  • 10.6 凌晨DOTA。中午创意园、清朴落。晚上深大西门转海岸城潮江春。又见KTV,bb fly。轻狂生日。
  • 10.7 中午华侨城海景早茶。晚上中信巴西烤肉。卡玛生日

Never Know

我不知道自己想要什么,于是疲于奔波.
自己接触的人越多,选择越多,就越不知道自己想要什么.

Never Know
Shocking but we’re nothing
We’re just moments
We’re Clever but we’re clueless
We’re just human
Amusing but confusing
Helping, we’re building
And we’re growing
Never Know

从未知道
令人震惊的,但我们什么都不是
我们只是瞬间
我们很聪明,但我们一无所知
我们只是人类
但有趣的困惑
尝试,但这种所有领先在哪里
永远不知道

不知道从什么时候开始,我就与一群又一群的人扎堆,玩乐.
玩什么都好,什么时候玩也好,就是不想一个人呆着.

我不知道自己想要什么,于是疲于奔波.
自己接触的人越多,选择越多,就越不知道自己想要什么.

很偶然地在卡玛的BLOG上听到这首歌,我就发现原来自己最喜欢这种慢摇的歌曲.
Jack Johnson一定是个在不动声色间独自闷骚的人。
这首歌让我听到许多东西.
一个故事, 一种心情, 一段记忆。
我脑袋里都一定能浮现出碧海、蓝天、清风、滑板……
感觉他哼唱的曲子如此低调,打包票绝对没有浮躁、闷热或者俗辣,只有阵阵清凉。


B:你觉得喜欢跟爱最大的区别是什么?
C:喜欢一个人,你和他在一起就很开心;爱一个人你只要一离开他就好难过.
………..
C:你觉得什么是喜欢什么是爱?
B:喜欢一个人,你开心的时候会想到她;爱一个人,你难过的时候会想着她.


【贰零一零】玻璃九月

晶莹剔透的玻璃杯

很久以前,我喜欢为每个月做一个主题,然后记录每个时间段的总结.
不过这个习惯已经停止了长达两年零两个月的岁月

突然想写点东西,来纪念最近浮夸的生活.
因为我变得不像自己.

以前我有一个小书柜,我会把自己喜欢的书整整齐齐地排放好

喜欢安逸,一个下午可以安安静静地看自己喜欢的书
现在我只知道我有很多书,但我不知道它们放在哪里.
现在我只知道我包里有一本书,而且已经放到两个多月,还没看完.

现在取而代之的是各种各样的活动

FB聚餐,压马路,KTV,三国杀,杀人游戏
喝酒,通宵,冷笑话,互相打击

<<人间喜剧>>中杜汶泽在电影中重复地说“到底是电影影响了我们杀手,还是我们杀手影响了电影…
电影里还有一句话”有人说选择越多,人就越孤独“.

每次活动以后,尽兴之余,总有一种失落感.
你真的懂你周围的朋友吗,你的朋友真的懂你吗?
我不确定是周围的环境印象了我,还是我改变了周围的环境.

九月的日子,就像玻璃,尽管很美.
但你知道除去那流露在外的晶莹剔透,
其实它是很容易破碎的.

而每天总能幻想到玻璃破碎的那一刻.

Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶

很多时候,做程序都需要有操作历史记录,特别是权限划分比较细的系统。
经常需要查看操作记录,某某人进行了什么操作,什么数据做了改动。
甚至有时候,需要对某条数据对版本回溯

如果,针对每种都做程序,无疑是很浪费时间的。
我们可以利用Yii中AR的CActiveRecordBehavior 事件行为,对每次数据操作后,做一次LOG数据记录。
继续阅读Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶

Yii AR 单行数据-自动缓存机制

本文的目的是通过使用Yii的Cache机制,在对AR MODEL的单条数据做one::model()->findByPk()的时候,优先读取缓存数据,如果不存在再去链接DB做数据读取。

AR自动缓存

相关的YII类:

  • CActiveRecord
  • CActiveRecordBehavior
  • cache

继续阅读Yii AR 单行数据-自动缓存机制