nginx+lua学习
nginx + lua(OpenResty)学习笔记,涵盖基础命令、平滑升级、配置文件等。
nginx 命令和信号控制123456789nginx -s stop # 快速关闭,不管有没有正在处理的请求nginx -s quit # 优雅关闭,完成已接受的连接请求后才退出nginx -c /path/nginx.conf # 指定配置文件启动nginx -s reload # 重启nginx -s reopen # 重新打开日志nginx -t # 检查配置文件是否正确kill -INT pid # 快速关闭kill -HUP pid # 重启
nginx 平滑升级123456789101112131415161718# 1. 下载高版本,解压缩,执行./configuremake# 2. 备份旧版本cd objscp nginx nginx.oldcp -rfp objs/nginx /usr/local/nginx/sbin/nginx -tps -ef | grep nginx# 3. 发送 USR ...
Python与RabbitMQ交互
RabbitMQ 消息队列成熟的中间件 RabbitMQ、ZeroMQ、ActiveMQ 等等。
RabbitMQ 使用 erlang 语言开发,使用 RabbitMQ 前要安装 erlang 语言。
RabbitMQ 允许不同应用、程序间交互数据。
python 中的 Threading queue 只能允许单进程内多线程交互的。python 中的 MultiProcessing queue 只能允许父进程与子进程或同父进程的多个子进程交互。
RabbitMQ启动
Windows 中默认安装成功,在服务列表中会显示自动启动
Linux 中使用命令 rabbitmq-server start
RabbitMQ 支持不同的语言,对于不同语言有相应的模块,这些模式支持使用开发语言连接 RabbitMQ。
Python 连接 RabbitMQ 模块有:
pika 主流模块
Celery 分布式消息队列
Haigha 提供了一个简单的使用客户端库来与 AMQP 代理进行交互的方法
使用 RabbitMQ 前,首先阅读开始文档:http://www.rabbitmq.com/getst ...
Python Socket请求网站获取数据
几种 IO 模型对比:
阻塞 I/O -> 收快递,快递如果不到,就干不了其他的活
非阻塞 I/O -> 收快递,不断的去问,有没有送到……如果送到了就接收
I/O多路复用 -> 找个代理人(select)去收快递,快递到了就通知用户
阻塞方式blocking IO 会一直 block 对应的进程,直到操作完成。
123456789101112131415161718192021222324252627import socketimport timeACCESS_URL = 'www.baidu.com'ACCESS_PORT = 80def blocking(pn): sock = socket.socket() sock.connect((ACCESS_URL, ACCESS_PORT)) request_url = 'GET {} HTTP/1.0\r\nHost: www.baidu.com\r\n\r\n'.format('/s?wd={} ...
Python操作Oracle数据库:cx_Oracle
Python 操作 Oracle 数据库多用 cx_Oracle 这个第三方扩展,总体而言,cx_Oracle 的使用方式与 Python 操作 MySQL 数据库的 pymysql 库还是很相似的。
安装与导入1pip install -i https://pypi.douban.com/simple cx_oracle
使用前导入:
1import cx_Oracle
千万注意,包名称 cx_Oracle 中,字母 “O” 是大写的,写成小写将会导入失败。
安装好 cx_Oracle 第一次使用时,出现 DatabaseError: DPI-1047,可以按照官方文档解决:https://oracle.github.io/odpi/doc/installation.html#linux
创建连接cx_Oracle 提供了两种方式连接 Oracle 数据库:创建独立的单一连接以及创建连接池。
单一连接通过 cx_Oracle.connect() 方法实现:
123456789# 基本连接connection = cx_Oracle.connect("username ...
使用psutil和MongoDB做系统监控
使用 Python psutil 采集服务器数据,MongoDB 存储,bottle Web 框架,jqplot 图表展示。思路通用于任何数据库或 Web 框架。
架构
psutil:采集 CPU、内存、磁盘数据
MongoDB:存储时序监控数据
bottle:轻量 Web 服务
jqplot:前端图表展示
Part 1: 采集数据123456789101112131415161718192021222324252627import psutilimport pymongofrom datetime import datetimeimport socketconn = pymongo.Connection('localhost', 27017)db = conn['loadmonitor']def get_server_data(): cpu = psutil.cpu_times() phymem = psutil.virtual_memory() disk = psutil.disk_usage('/' ...

