python
wi_python
现在的还是“菜鸟”,固有很多不足需要拟补。我一直深信不疑,有选择的坚持将成就下一个美丽;
我要不停的进步,因为我不满足,即使我是蜗牛,也要坚信我前进的脚步。
展开
-
Python新式类和经典类的区别
从Python2.2开始,Python 引入了 new style class(新式类)新式类跟经典类的差别主要是以下几点:新式类对象可以直接通过__class__属性获取自身类型:type # -*- coding:utf-8 -*- class E: #经典类 pass class E1(object): #新式类 pas原创 2015-07-15 18:04:04 · 14071 阅读 · 2 评论 -
supervisor 笔记
supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。安装supervisorapt-get install supervisor配置生成配置文件echo_supervisord_conf > /etc/supervisord.conf添加自己的项目用一个my_tornado项目 测试vim /var/w原创 2016-04-13 01:10:00 · 969 阅读 · 0 评论 -
rabbitmq 爬虫
基于rabbitmq 简单的分布式爬虫程序架构Download进程负责下载页面ParseBase监听Download下载完成的消息,解析页面(URL,EMAIL,……)使用supervisor 管理进程 使用fabfile部署代码简单版代码https://github.com/neo-hu/rabbitmq-crawler完整版下载:频率修改,代理(翻墙)设置 页面解析:关键字,分词统计等原创 2016-04-13 03:21:33 · 1253 阅读 · 0 评论 -
error
Module_six_moves_urllib_parse’ object has no attribute ‘SplitResult’$ sudo apt-get install python-novaclient$ sudo apt-get install python-glanceclient原创 2016-05-02 09:13:53 · 380 阅读 · 0 评论 -
Haproxy Tornado笔记
haproxy: 负载均衡,动静态分离 keepalived: haproxy主备 varnish: 静态文件缓存 supervisor: 管理Tornado进程环境 eth0:192.168.31.197eth1:10.10.100.100 haproxy主机 eth0:192.168.31.159 eth1:10.10.100.101 haproxy备机原创 2016-04-25 00:16:14 · 1330 阅读 · 0 评论 -
protobuf RPC实现
Server 结构结构参照hadoop RPC结构,自己造轮子 传输的数据结构1,abstract class Server 接收并且响应客户端请求,把请求数据封装成Call 交给之类实现 2,客户端首次连接必须发送头”HEADER”+version+ServiceClass(Server 实现的之类)+auth *|——–4byte——-|———-3byte—————–| *|————原创 2016-03-27 19:39:25 · 3233 阅读 · 0 评论 -
Python单例模式
注解方式class singleton(object): def __init__(self, cls): self.cls = cls def __call__(self, *args, **kwargs): current = getattr(self, "_instance", None) if not current:原创 2016-05-10 21:43:12 · 441 阅读 · 0 评论 -
Thrift对多接口服务的支持
test.thrift文件struct Message { 1: string msg}service MessageService { Message getMessage(1:Message msg)}struct User { 1: string name}service UserService { User getUser(1:User user)}t原创 2016-05-08 17:49:45 · 4859 阅读 · 0 评论 -
thrift TBinaryProtocol 数据传输格式
Thrift version 0.9.0服务端接收和发送数据接收数据格式方法数据格式sz, = unpack('!i', socket.recv(4))if sz < 0: version = sz & -65536 #版本掩码 if version != -2147418112: raise type = sz & 0x000000ff #字符串先读原创 2016-05-07 23:31:38 · 3954 阅读 · 0 评论 -
使用Fabric部署网站应用
以前一直用git同步代码到服务器,这种方法一台机器还行,如果多台机器就不急麻烦了,后来用pssh处理多台,也不方便 后来发现了Fabric,发现这个东西部署起来简直太爽了创建一下脚本fabfile.py#!/usr/bin/env python# encoding: utf-8import osfrom fabric.api import settings, cd, run, env#需要部署原创 2016-04-11 02:33:46 · 950 阅读 · 0 评论 -
Ubuntu下安装PyV8
sudo apt-get install libboost-all-devsudo apt-get install aptitudepip install -v pyv8或:sudo apt-get install scons libboost-python-devsvn checkout http://v8.googlecode.com/svn/trunk/ v8svn checkout ht原创 2016-04-28 22:58:02 · 1913 阅读 · 0 评论 -
python classmethod,staticmethod实现
classmethodclass my_classmethod(object): def __get__(self, obj, type=None): def wrapper(*args, **kwargs): return self.function(type, *args, **kwargs) return wrapper原创 2016-05-10 21:58:36 · 1701 阅读 · 0 评论 -
修饰器
函数修饰器通常是用来给现存的函数增加每次函数被调用时都会运行的一层逻辑。它们可以用来记录函数的日志或者调用次数,检查参数的类型,用户权限等。如果我想记录每个函数执行的时间,1,可以在每个函数里面加逻辑,如果函数太多,代码改动太大# -*- coding:utf-8 -*- import timedef foo(): start= time.clock()原创 2015-07-15 18:00:04 · 606 阅读 · 0 评论 -
Pony ORM
传统的ORM,需要你使用它提供的.query、.filter、.get之类的函数实现查询。而Pony ORM另辟蹊径,直接以generator expression,然后解析AST树的方式构造SQL语句。举个例子:有一个Person表,需要查询其中age大于20的person。在Pony ORM里只需要select(p for p in Person if p.age > 20)翻成sql就是SEL原创 2015-07-16 15:39:33 · 3681 阅读 · 0 评论 -
python 基本Kmeans算法实现
# coding=utf-8import sysimport mathclass Item(object): #需要计算的字段,必须能相减的 field = ["age", "h"] def __init__(self, name="", age=0.0, h=0.0): self.name = name self.age = age原创 2016-03-16 10:58:33 · 850 阅读 · 0 评论 -
Python 常用的特殊函数
map map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回def a(x): return x*2print map(a, [1, 2, 3, 4])#结果[2, 4, 6, 8]or lambdaprint map(lambda x: x*2, [1, 2, 3, 4])#结果[2, 4, 6, 8]reduce reduce把结果继续和序列的下一原创 2016-03-16 11:44:42 · 1396 阅读 · 0 评论 -
nginx+wsgi+flask配置
wsgi配置文件vim uwsgi.ini[uwsgi]socket = /tmp/t1.sockpidfile = /tmp/t1.pidplugins = pythonpythonpath = /var/www#项目python环境virtualenv = /var/www/env#项目的跟路径pythonpath = /var/www/my_flaskchdir = /var/原创 2016-03-21 10:16:09 · 694 阅读 · 0 评论 -
Django开发常用的模块
Django REST 框架django-tastypiedjango-tastypie Tastypie 是 Django 框架的一个 webservice 接口。它提供了一个方便、强大而且高定制化的 REST 风格接口。 Tastypie 非常容易显示您的模型,但也能完全让你控制你所期望得到的信息。只要你需要,能让你远离抽象的数据库。 Tastypie 也能让你非常容易的集成原创 2016-02-26 14:41:34 · 3690 阅读 · 0 评论 -
sqlalchemy 笔记
初始化数据库连接DB_CONNECT_STRING = 'mysql+mysqldb://root:123123@localhost/sqlalchemy?charset=utf8'engine = create_engine(DB_CONNECT_STRING, echo=True)数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名创建DBSessionDB_Session原创 2016-03-27 23:18:21 · 770 阅读 · 0 评论 -
Etag 笔记
用于标识出资源的状态。当资源发生变更时,如果其头信息中一个或者多个发生变化,或者消息实体发生变化,那么ETag也随之发生变化。 ETag常与If-None-Match或者If-Match一起,由客户端通过HTTP头信息(包括ETag值)发送给服务端处理。ETag使用如下:request headers......If-None-Match: "3c64e7a072b3b57e100c96134e原创 2016-05-10 18:26:20 · 1069 阅读 · 0 评论 -
python连接HBase
环境 hadoop 2.7.0 hbase 1.2.1 Thrift 0.9.0启动hbase的Thrift RPC生成python的Thrift模块cd hbase-1.2.1/hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thriftthrift --gen py Hbase.t原创 2016-05-18 00:30:45 · 9946 阅读 · 2 评论