uuid
通用唯一识别码(Universally Unique Identifier, uuid),是一种软件建构标准,亦为开放软件基金会组织在分布式计算机领域的一部分。
UUID的目的,是让分布式系统中的所有元素,都能有诶亿的辨识信息,而不需要通过中央控制端来识别信息的制定。
Python uuid库就是用来生成它的。
itertools
Python內建的itertools提供了非常有用的用于操作迭代对象的函数,这些函数的返回都是一个迭代器;
pymysql
pymysql是一个纯Python写的MySQL客户端,它的目标是替代MySQLdb,可以在多种Python IDE环境下运行。
它在Python3.x中用于连接MySQL服务器的一个库。
conn=pymysql.connect(
host='127.0.0.1',user='root',passwd='root',db='mysql'
)
cur = conn.cursor()
#cursor 游标
cur.execute('CREATE DATABASE IF NOT EXISTS activate_code')
cur.execute('USE activate_code')
cur.execute('''CREATE TABLEIFNOT EXISTS table_test(
id INT NOT NULL AUTO_INCREMENT,
code VARCHAR(40) NOT NULL,
PRIMARY KEY(id)
)''')
cur.execute('INSERT INTO table_test(code) VALUES(xxx)')
cur.close()
conn.close()
PIL
Python Imaging Library, PIL不支持3.x。在3.x版本上有一个兼容的Pillow ---> pip install pillow。
pymongo
pymongo是Python中用来操作MongoDB的一个库;
MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。其文件存储格式类似于JSON,叫BSON,不严谨、通俗地理解,就是Python中的字典键值对格式。
pip install pymongo
或 pip install pymongo -i https://pypi.tuna.tsinghua.edu.cn/simple
# -i, --index-urlBase URL of Python Package Index
connection = pymongo.MongoClient('127.0.0.1',27017)
redis-py
python提供了一个模块redis-py来使我们很方便的操作redis数据库。
pip install redis
conn = redis.Redis(host='x.x.x.x', port=6379)
#conn = redis.Redis(host='x.x.x.x',port=6379, passwor='xxxxxx')
conn.set('name', 'zhang')
print(conn.get('name'))
可能这里会报错:protected mode, bind ip
redis.exceptions.ResponseError: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface.
解决方法:/etc/redis.conf
1,Redis监听地址 “bind: x.x.x.x”,强烈建议只对本地127.0.0.1开放,我这连接对我自己的内网地址 192.168.1.7开放,不建议对外网开放,有安全隐患;
2,防火墙,最简单就是关闭防火墙,另一个就是开放redis的监听端口;
3,开启守护进程,让redis可以在后台运行而不必通过 redis-server 的方式来启动,将配置文件里的 deamonize no 改为 yes;
4,关闭redis的保护模式(protect-mode),这里的保护模式是指是否允许其他IP的设备访问redis。如果开启的话就只能允许本机访问。如果是生产开发的实际运行环境,请一定开启保护模式。 protect-mode no;
5,设置redis数据库密码。如果是本机测试,可以跳过这一步。但如果要开放外网访问redis,就必须给redis添加密码。不仅仅是redis,任何数据库都应该设置密码,否则对外网开放的数据库就成了活靶子。 requirepass password设置密码;
再次强调,任何正式数据库环境请一定注意安全,以上操作应用于测试环境。
ngxtop
ngxtop类似于Linux的top命令,设计为在短时间内运行,做诶服务器的故障排除和监控使用。
ngxtop使用Python2开发,虽然支持Python3,但我在Python3.x环境下安装完成后会有问题!
pip install ngxtop
#可能需要用到 yum install python-pip
用法:
ngxtop [options]
ngxtop [options] (print|top|avg|sum) ...
ngxtop info
ngxtop [options] query ...
使用栗子:
显示Nginx服务器,按请求数量排序 ---- ngxtop;
显示前20个最频繁的请求 ---- ngxtop -n 20;
列出需要显示的变量 ---- ngxtop print request http_user_agent;
获取Nginx基本信息 ---- ngxtop info;
显示请求最多的客户端IP地址 ---- ngxtop top remote_addr;
显示状态码是404的请求 ---- ngxtop -i ‘status == 404’ print request status;
统计访问次数最多的请求 ---- ngxtop -l access.log --no-follow;
自定义过滤条件 ---- ngxtop -l access.log --no-follow -i ‘status != 200’;
更过自行查看帮助信息;
使用普通格式从远程服务器解析Nginx日志:
ssh user@remote_host tail -f /var/log/nginx/access.log | ngxtop -f common
re模块:核心函数和方法
以下函数和方法与已经编译的正则表达对象(regex object)和正则匹配对象(regex match object)的方法同名并且具有相同的功能。
几乎所有的 re模块函数都可以作为 regex 对象的方法。
使用 compile() 函数编译正则表达式;
匹配对象以及 group() 和 groups() 方法;
使用 match() 方法匹配字符串,
使用 search() 在一个字符串中查找模式(搜索与匹配的对比);
匹配多个字符串;
匹配任何单个字符;
重复,特殊字符以及分组;
匹配字符串的起始和结尾以及单词边界;
使用 findall() 和 finditer() 查找每一次出现的位置;
使用 sub() 和 subn() 搜索与替换;
在限定模式上使用 split() 分割字符串;
扩展符号;