- 浏览: 26118 次
- 性别:
- 来自: 郑州
最新评论
-
cn.popeye:
这个到真是可以看看
UltraMemcache , UltraMySQL 初试 -
MyEyeOfJava:
thanks
使用MySQL-Python1.2.3链接MySQL5.5 -
MyEyeOfJava:
thanks
使用MySQL-Python1.2.3链接MySQL5.5 -
huatu122:
等天上掉大饼 写道I'm very happy seeing ...
2011年2月TIOBE排名:python超过php -
dir_murong:
prettyinsight 写道everything is c ...
2011年2月TIOBE排名:python超过php
文章列表
这两个是由ESN公司开发的的memcache、mysql客户端
显著特征是:
完全由C、C++完成,更高效
可以与gevent的socket monkey patch很好的配合,实现异步的memcache和mysql访问
文档几乎为0,没有可供参考的例子。摸索了一点点东西记录如下:
UltraMemcache
安装
从github或者pypi上下载umemcache,解压后 python setup.py build install 安装
使用
import umemcache
mem_client = umemcache.Client('1 ...
AmFast源码浅析
- 博客分类:
- python
一直以来,很好奇amfast是如何实现服务器端基于长/普通轮询通道的主动推送的。最近看源码有了收获,记录如下。
正本清源——主动推送
正所谓欲将取之必先予之,要想理解服务器端的主动推送,就必须要坚定心中对于http协议:
一次请求,一次回复;没有请求,没有回复!
的信念,坚信除了websocket和flash socket,所有的浏览器上的消息更新都是基于浏览器的主动发出的http请求,所谓的“主动推送”只是个美丽的名字。
隐藏的真相——广播即固化
amfast提供的消息广播的接口如下:
from amfast.remoting impor ...
用的是ubuntu10.10 server版,自带的mysql。安装mysql-python时提示没有mysql_config文件。解决方法:安装mysql-client 和 libmysqlclient-dev包即解决。
问题暴露:
客户端第一次访问时,总会卡上1——2s才能获得数据,之后再访问时就没有问题了。
问题解决:
在eclipse的django shell模式下测试服务端写的一些接口,在调用需要从数据库查询数据的方法时, 也出现了卡了1——2s的情况,然后提示:
the sets module is deprecated
这才意识到,是这个在python2.6中不推荐使用的sets模块导致了问题。
经过查询python2.6的手册:
Deprecated since version 2.6: The built-in
set/frozenset types repla ...
因为项目要用到memcache,一直头疼于memcache python绑定的线程安全问题,今天无意中才发现,django的cachebackend已经处理好了~
写道
Django relies on the cache backend to be thread-safe, and a single instance of a memcache.Client is not thread-safe. The issue is with Django only creating a single instance that is shared between all threads ( ...
最新统计的前五:
1、 Java 18.482%
2、 C 14.986%
3、C++ 8.187%
4、python 7.038%
5、php 6.973%
第六是C#
这次统计加上了baidu的搜索结果~
mysql-python1.2.3可以连接MySQL5.5
环境:Windowsxp python2.6 mysql5.1(之前安装的,没有删除) mingw32
安装mysql5.5:
这个没什么好说的,记得安装的时候把开发人员所需的内容选上(或者完全安装)。
我的mysql5.1还跑在3306端口,所以5.5就设在3307端口。
服务的名字也不能用“mysql”,因为5.1占了,所以我设成mysql5.5
安装mysql-python1.2.3:
安装1.2.2的时候使用的是Windows exe格式的安装包,没有费什么劲,没有想到这个1.2.3的源码包装起来这么费劲。
...
A模型(表)和B模型(表),俩模型(表)一样。
目标:从A表中取出一条记录,然后转存到B表中。
实现的方法:
a = A.objects.all(id = **)
a._meta.db_table = 'B'
a.save()
居然这样就可以了~
个人感觉很神奇,因为从python看来,a是A的一个实例,但是只是改了a的一个参数,然后通过调用a自己的方法,居然创建出来了一个B的实例b~
_meta是一个model里所有设定(参数)的集合。
编码与解码
python 内置的数据结构 和 As内置的数据结构之间的转换见:http://code.google.com/p/amfast/wiki/EncodeAndDecode#Encoder_and_Decoder上的表格
自定义的类型映射
amfast支持用户自定义的对象类型。
使用 amfast.class_def.ClassDef对象,以达到用户自定义对象的序列化与反序列化。
使用ClassDefMapper将一个amfast.class_def.ClassDef与一个客户端的对象映射起来。
from amfast import class_def
...
存储session数据
使用connection对象存储session数据
1、RemoteObject 的session 数据
客户端使用RemoteObject连接服务器端时,AMFast 会自动为 RemoteObject 创建一个 connection对象 。
simomo:这里connection是用来存储session数据的。注意:需要用ExtCallableTarget而不是CallableTarget来解析AMF 包或消息,这样才能使用connection对象。
# Use ExtCallableTarget to expose Packet and M ...
因为要用到amfast,所以尝试着将其文档翻译为中文,供大家参考。
MessagingServer(消息服务):
1、overview(概述):
频道集(ChannelSet)对象负责路由(route)受到的请求信息(request message)和派发、发送(dispatch)回复 ...
用命令easy_install amfast安装,最后总是提示:
error: Setup script exited with error: command 'gcc' failed with exit status 1
这个页面:
http://www.rmansuri.net/2009/11/20/setup-script-exited-with-error-command-gcc-failed-with-exit-status-1/
上给出了解决办法,要先安装python-dev:
apt-get install python-dev
然后再用easy_install 安装amfas ...
为了跑memcache,安装了一个ubuntu server版,纯命令行下安装django、ipython等不在apt-get里的软件很不爽,一直是在用 elinks 这个命令行浏览器去下载。不多废话。下面是简单的路子:
1、wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
这就把setuptools装上了
2、easy_install ipython
easy_install django
等等…… 就随你喜欢了
wget是个很有用的工具,以前居然没有听说过~~!汗~ ...