‘Python’ 分类下的所有文章

Python方面的技术实践总结,希望大家多多交流,共同进步

2013二月21

django不同sites间的session共享

分类:Python | 标签:, | 浏览:2,953 0 Comments

环境

Django==1.4.3

起因

在同一域名下的不同目录挂了两个django项目,类似:site1(url.com/a/),sites2(url.com/b/),发现登陆其中一个站点,另一个站点就会退出登陆。原因其实也不是很难猜,应该是同域下的cookie共享造成的,而我两个项目中的SESSION_COOKIE_NAME配置又是一样的,同时后端session数据又存储在同一个地方。但这个结果却不是很让我理解,因为如果所有都是一样的话,最后的结果应该是登陆一个site,另一个site也自动登陆,退出一个site,两个sites同时退出。

Read more…

2013二月18

Apache+uwsgi+django基于目录配置站点

分类:Python | 标签:, | 浏览:3,474 0 Comments

写作背景

      最近基于django写了两个项目,以前一直用nginx+uwsgi来配置,可是公司的服务器上已经跑了apache,本着重复利用的原则,就改成了apache+uwsgi,下面就记录下配置的过程。
      服务器环境:是Fedora 17,apache使用yum直接安装,版本为2.2.22。

1、软件安装

      1.首先安装uwsgi相关的软件包
      yum install uwsgi,uwsgi-devel,uwsgi-plugin-common,uwsgi-plugin-python
      2.然后安装mod_uwsgi,因为软件源中没有,所以这里选择自己编译,先下载mod_uwsgi.c,使用Apache扩展工具apxs编译
      sudo apxs -i -a -c mod_uwsgi.c,
      这样就会在apache的modules目录中增加mod_wsgi.so
      3.在apache的配置文件httpd.conf中使用LoadModule指令在运行时刻将其加载到Apache服务器中
      LoadModule uwsgi_module modules/mod_uwsgi.so。
      这样apache+uwsgi就已经配置好了。
Read more…

2012十一月27

python项目中输出指定颜色的日志

分类:Python | 标签:, , | 浏览:8,645 1 Comment

起因

      在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中。而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信息。

解决

      我们可以通过对有用的信息设置不同颜色来达到醒目的效果,因为我平时都是在linux下开发,而linux终端中的颜色是用转义序列控制的,转义序列是以ESC开头,可以用\033完成相同的工作(ESC的ASCII码用十进制表示就是27,等于用八进制表示的33)。
Read more…

2012十一月12

在django中使用jinja2模板

分类:Python | 标签:, , | 浏览:3,250 0 Comments

起因

      django算的上是用的人最多的python框架了,特别是在网站开发方面,他的大而全的确可以为开发者节省大量的开发时间。然而django的模板是一直让人诟病的地方,可能是为了实现严格的m-v-t(model-view-template),django自带的模板有很强的限制,虽然也提供了扩展方式,例如tag,filter,但却还是给人以不简洁的感觉。
Read more…

2012十一月11

使用supervisord来管理process

分类:Python | 标签:, , | 浏览:9,255 1 Comment

前提

       项目正式部署的时候,我们通常会将其转化为系统的守护进程,或者使用nohup,screen,&等将其放到后台运行,但是以上方式并不会为我们监控进程的运行状态,一旦进程崩溃,我们的项目就无法继续提供服务。

解决

       supervisor是一个进程控制系统,由python编写,它提供了大量的功能来实现对进程的管理
Read more…

2012十一月11

使用virtualenv隔离python环境

分类:Python | 标签:, | 浏览:3,915 0 Comments

前提

       在开发过程中,经常需要使用各种第三方库,而且python又提供了pip,easy_install等工具来简化库的安装,所以很容易就会在系统python的site-packages目录中装满各种各样的库,但是这样在下面几种情况下会有问题:

1.没有site-packages目录的写权限,比如共享主机
2.不同项目依赖同一个库的不同版本,而这两个版本又不向下兼容
3.在linux下更新系统时,自动更新某些依赖库

Read more…

2012十一月7

用HTMLParser来抓取数据

分类:Python | 标签:, | 浏览:1,590 0 Comments

起因

       有时候测试代码需要大量的合法URL,而自己随机生成的又可能不存在,所以通常情况下会找一些包涵大量URL的页面去分析提取,HTMLParser就是这样一个页面分析工具,它是python的标准库,而且用起来很简单,所以在偶尔需要提取页面标签数据的时候很适合。
Read more…

2012十一月6

利用python函数(*)或(**)的参数方式实现表内多字段,多条件查询

分类:Python | 标签:, | 浏览:332 0 Comments

起因

       最近在做一个测试数据分析工具,因为涉及到mysql数据库中的数据,所以写了很多使用MySQLdb执行SQL的函数,慢慢就发现有一类很类似的函数:

def get_a_by_c(x):
    return db.excute("SELECT a FROM t WHERE c=%s" % x)
def get_b_by_c(x):
    return db.excute("SELECT b FROM t WHERE c=%s" % x)

它们在某个表内根据不同的条件查询不同的字段,一样的结构却让我们不得不重复的写枯燥的函数。
Read more…

2012十一月5

利用python的模块缓存机制使JSON库支持datetime类型

分类:Python | 标签:, | 浏览:329 0 Comments

前提

       在python运行环境中已加载模块会存在于sys.modules,import 已加载模块只是将sys.module中对应模块引到local命名空间,多个文件多次import同一模块内存中为同一模块对象。

实现

       因此我们可以通过修改已加载的模块来达到修改标准库的目的,gevent框架就是通过这种方式来监控调度方法的运行状态,这里我们也使用gevent的patch方式。
Read more…