分类目录归档:Python编程

Python编程-字符串的编码转换、存储及乱码问题

Python2(包括Python26、Python27等)的字符串通常包含str、unicode两种类型,通常str的字符串编码方式由源码文件的编码方式决定,目前使用的基本都是UTF-8的编码格式,所以要在py文件的头部指定编码格式: 在Python程序内部,通常使用的字符串为unicode编码,这样的字符串字符是一种内存编码格式,如果将这些数据存储到文件或是记录日志的时候,就需要将unicode编码的字符串转换为特定字符集的存储编码格式,比如:UTF-8、GBK等等,很多时候Python程序员都会遇到乱码问题,相信以下的一些处理方式和技巧能帮助大家解决乱码问题。 unic […]

[阅读全文...]

Tornado编程-WebSocket原理及代码示例

一. WebSocket协议 WebSocket 协议本质上是一个基于 TCP 的协议。 为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息”Upgrade: WebSocket”表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。 由于这个规范 […]

[阅读全文...]

OpenSSL编程-Python实现公钥RSAPublicKey格式与大数字符串转换

在我们的项目开发和运维过程中,经常会遇到公钥的RSAPublicKey格式数据与BIGNUM大数字符串格式数据的转换,python的rsa模块提供这方面很便捷的转换,记录一下这两个格式之间的转换函数。

[阅读全文...]

生产环境优雅的重启基于Nginx、Tornado的Web服务进程

Nginx是一个高效的Web服务器及代理服务器,Tornado是一个基于epoll的异步Web开发框架,通常使用Nginx做为Web服务器时,都会以FastCGI模式,而我们从开发、调试、运维的角度考虑,使用了反向代理的模式,同时Nginx可以做一些特殊业务和负载均衡的处理。 其实反向代理模式很简单,Nginx监听在80端口,做为Web服务端口,而Tornado的Web服务进程监听在808*的内部端口(可以启动多个进程),使用supervisor对Nginx、Tornado服务进程进行统一的管理。 首先看supervisor的配置: 启动脚本(可以放到start.sh中): […]

[阅读全文...]

在C程序中内嵌Python解释器,用脚本语言实现灵活的Plugin机制

在经历过的一些大型项目中,很难独立使用一种开发语言完成任务,由于我这边的业务项目通常以服务器方面居多,从项目周期和运营维护角度考虑,既要考虑到程序的性能,又要考虑到业务功能变更和维护的便利性。 很多时候,我们都会以Python进行框架开发,在一些涉及到性能要求的时候以内嵌C模块的形式进行扩展,以提高整个项目的执行效率。然而我们还有很多以C语言开发的服务器项目,通常使用Prefork、MPM等多进程或多线程的框架,那么怎么才能做到灵活的对这些服务器程序的业务扩展或是Plugin功能呢? 以前在纯C语言时,我们通常采用so lib或是dlopen的方法,这样每次增加或是调整业务 […]

[阅读全文...]

Python工具库-构建纯python的iconv编码转换函数库

背景: 日前遇到一封Apple Mail客户端发出来的邮件,字符集居然是 ISO-2022-CN,无奈Python2下面decode不支持,找了一圈,没发现iconv的python库(找了一个,不太好使),只好自己动手丰衣足食,以ctypes的方式,封装一个基于libc的iconv方法。 源码:

[阅读全文...]

Python下使用qrcode模块生成vCard电子名片二维码图片

随着微博、微信、O2O的繁荣发展,现在二维码的使用频率越来越高,初步尝试了一下,现在考虑是不是接下来专门做一个服务,为企业邮箱的客户直接生成二维码的电子名片签名,这样也可以提升一下用户气质。 首先下载python-qrcode模块,通过setup.py进行安装 示例代码如下:

[阅读全文...]

Linux下搭建基于Nginx+FastCGI+Flup+Webpy+Cheetah的Python Web环境

对于开发同学,一般很少去搭建运维环境,通常的开发环境都是直接复制一份生产环境或是yum直接安装系统包,不知道有没有像我这种有洁癖,通常软件的运行、开发环境都要自己指定目录的情况,可能这就是C背景深受make感染的原因吧。 一. 软件包需求 二. 软件包安装 注意:./configure 选择prefix安装路径,安装nginx需要指定pcre软件包路径,setuptools用于python包安装管理,安装flup、webpy时需要使用自己安装的python2.7 1. Python安装 2. nginx安装 3. setuptools安装 4. flup安装 5. webp […]

[阅读全文...]