Django安装配置Memcached缓存优化性能

2010-04-26 14:55:24 by sand, 1656 visits, Tags: 性能优化, Python, Django,

操作系统:Linux Cent OS 5 / Max OS X 10.6 snow leopard

环境:Python2.6.4 Django1.1

安装版本:Memcached 1.4.5

django的缓存机制可以实在的提高程序的性能,其中最快速最直接的就要数内存缓存memcached了

下面介绍一下安装配置及使用方式

  1. 下载:
    官方 http://memcached.org
    直接下载   http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
     
  2. 解压:
    tar zxvf memcached*
     
  3. 进入解压目录运行命令安装
    1)./configure
    2)make
    3)make install
     
  4. 安装完成可以测试一下:
    memcached -help
     
  5. 加入开机启动,编辑/etc/rc.local加入
    /usr/local/bin/memcached -d -m 16 -u root -l 127.0.0.1 -p 13031 -c 1024 -P /tmp/memcached.pid

    -d选项是启动一个守护进程
    -m是分配给Memcache使用的内存数量,单位是MB,我这里是16MB
    -u是运行Memcache的用户,我这里是root
    -l是监听的服务器IP地址
    -p是设置Memcache监听的端口,最好是1024以上的端口
    -c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P是设置保存Memcache的pid文件
     
  6. django中的配置
    setting.py里配置CACHE_BACKEND = 'memcached://127.0.0.1:13031'
     
  7. 安装python与memcached绑定模块

    1)安装libmemcache
    下载:http://people.freebsd.org/~seanc/libmemcache/libmemcache-1.4.0.rc2.tar.bz2
    安装:
    ./configure
    make
    make install
    2)安装cmemcache
    下载:http://gijsbert.org/downloads/cmemcache/cmemcache-0.95.tar.bz2
    安装:
    python setup.py install
     
  8. 使用:
    from django.core.cache import cache
    cache.set('MyKey','myvalue',3600)
    #参数分别为key,value,超时时间
    cache.get('MyKey')
    cache.delete('MyKey')
     

错误及解决:

  1. 错误:configure: error: libevent is required.
    解决:
    安装libevent
    1)下载http://www.monkey.org/~provos/libevent-2.0.4-alpha.tar.gz
    2)解压:
    tar zxvf libevent*
    3)运行命令安装:
    ./configure
    make
    make install
     
  2. 错误:error while loading shared libraries: libevent.so.3: cannot open shared object file: No such file or directory
    解决:ln -s /usr/local/lib/libevent.so.3 /usr/lib/

评论 (2)        

Django admin实现图片文件上传

2010-04-24 22:52:18 by sand, 1375 visits, Tags: admin, Python, Django,

一般大家都知道django有个很好用的管理后台admin,普通应用这里就不说了,介绍一下他里面的内置实现的文件上传功能

  1. 首先在model里定义属性:
    pic = models.ImageField('图片',upload_to='uploadImages')
     
  2. 修改setting.py
    MEDIA_ROOT = 'media1001/'
    MEDIA_URL = '/webhost_media/'
     
  3. 数据库对应实体的表中添加pic字段,属性为文本,这个只是用来保存文件路径的
     
  4. 上面配置代表的意思大概是:
    上传图片到:web程序目录/media1001/uploadInages/
    访问路径为:http://hostname/webhost_media/uploadImages/filename.jpg
     
  5. 基本就是这样,大家可以试一下,很方便,页面调用为modelobjname.pic.url

     

错误及解决:
 

  1. framework.product: "pic": To use ImageFields, you need to install the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ .

    解决:安装Python Imaging Library (PIL)
    1)下载:
    官方:http://www.pythonware.com/products/pil/
    直接下载:http://effbot.org/downloads/Imaging-1.1.7.tar.gz
    2)运行命令安装:
    sudo python setup.py install
     
  2. ImageField causing error when rendering with "The Image" attribute has no file associated with it.

    解决:调用pic.url时要先判断pic不为空

有问题请留言或联系我,一定尽力解答,Good Luck!

评论 (2)        

Apache httpd服务下Django全局变量

2010-04-23 14:34:23 by sand, 758 visits, Tags: Python, Apache, Django,

最近开发中碰到的一个问题,关于django中的全局变量

在本地开发环境中django是可以用全局变量的,声明在类和方法外面,大家可以共用这个变量

但是部署到服务器上的apache就发现一个问题,apache是多进程模式运行的,每个请求在不同的进程,导致进程间数据不能共享,全局变量也就失去了意义

网上查了一些,但还没确定哪种方法最好,备忘一下,以后有时间专门研究下,或者谁有好方法请分享下,谢谢。

评论 (4)        

Python大量字符串组合相加处理优化

2010-04-21 10:13:41 by sand, 1344 visits, Tags: 数据类型, String, 性能优化, Python,

Python中字符串处理之前介绍过了,大家一般进行字符串组合是采取下面的模式:

相加:'ddd'+'sssss'结果为dddsssss

或者格式化:'dddd%s%s%d' % ('-','ss',5)结果为dddd-ss5

当遇到大量字符串组合而且可能数量不定的情况,这两种方式就都又点效率低了

下面介绍一种比较优化的处理方法,而且可以以一定的格式组合,使用的是字符串的join方法:

idlist=[]

for obj in objs:
    idlist.append(str(obj.id)) 
ids=','.join(idlist)

结果ids为1,2,3,等所有obj对象的id用,间隔的组合,如果不想有间隔,可以用''.join(idlist),前面代表间隔符,后面代表要组合的字符串列表

基本就是这样, 如果有问题可以留言或联系我,一定尽力解答

评论 (2)        

Older Posts »