openresty 学习笔记番外篇:python的一些扩展库
openresty 学习笔记番外篇:python的一些扩展库
要写一个可以使用的python程序还需要比如日志输出,读取配置文件,作为守护进程运行等
读取配置文件
使用自带的ConfigParser模块
import os
import ConfigParser
获取配置文件路径并进行读取
path = os.path.realpath(__file__)
path = os.path.dirname(path)
configPath = path + '/config.cfg' config = ConfigParser.ConfigParser()
config.read(configPath)
使用方法
agentConfig = {}
agentConfig['MYSQLport'] = config.get('MySQL', 'port')
日志输出
使用自带的logging库
import logging
import logging.handlers
定义日志级别
loggingLevelMapping = {
'debug': logging.DEBUG,
'info': logging.INFO,
'error': logging.ERROR,
'warn': logging.WARN,
'warning': logging.WARNING,
'critical': logging.CRITICAL,
'fatal': logging.FATAL,
}
customLogging = config.get('Logging', 'logging_level')
agentConfig['LOGGINGlevel'] = loggingLevelMapping[customLogging.lower()]
定义日志文件路径和格式
logFile = agentConfig['LOGGINGfile']
handler = logging.handlers.RotatingFileHandler(logFile, maxBytes=10485760, backupCount=10) # 10MB files
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) mainLogger = logging.getLogger('main')
mainLogger.setLevel(agentConfig['LOGGINGlevel'])
mainLogger.addHandler(handler)
使用方法 mainLogger.info(" Messages Done")
mainLogger.debug(" ACK Messages")
守护进程
使用第三方库Python daemonizer class
from daemon import Daemon
定义一个类继承守护进程并且有run()方法
class pantalaimon(Daemon):
def run(self):
# Do stuff pidFile = agentConfig['DAEMONpid']
daemon = pantalaimon(pidFile)
对守护进程的各种操作
if 'start' == sys.argv[1]:
daemon.start() elif 'stop' == sys.argv[1]:
daemon.stop() elif 'restart' == sys.argv[1]:
daemon.restart() elif 'foreground' == sys.argv[1]:
daemon.run() elif 'status' == sys.argv[1]:
try:
pf = file(pidFile,'r')
pid = int(pf.read().strip())
pf.close()
except IOError:
pid = None
except SystemExit:
pid = None if pid:
print 'is running as pid %s.' % pid
else:
print 'is not running.' else:
print 'Unknown command'
sys.exit(1)
openresty 学习笔记番外篇:python的一些扩展库的更多相关文章
- openresty 学习笔记番外篇:python访问RabbitMQ消息队列
openresty 学习笔记番外篇:python访问RabbitMQ消息队列 python使用pika扩展库操作RabbitMQ的流程梳理. 客户端连接到消息队列服务器,打开一个channel. 客户 ...
- 《30天自制操作系统》学习笔记--番外篇之Mac环境下的工具介绍
这几天又有点不务正业了,书也没看,一直在搞这个破环境,尝试各种做法,网上各种垃圾信息,浪费了很多时间,说的基本都是废话,不过还是找到了一些,赶紧写下来,不然这个过几天又忘了 首先是环境,我用的是Max ...
- Python学习-day10(番外篇) 阻塞IO 非阻塞IO 同步IO 异步IO
这个章节的内容是关于IO的概念,谈一谈什么是 阻塞IO 非阻塞IO 同步IO 异步IO.以下摘要是我对这四种IO的一个形象理解. 场景是去去银行办理业务.节点有三个,1)到银行提交申请:2)取号:3) ...
- H5学习_番外篇_PHP数据库操作
1. 文件操作 1.1 打开关闭文件 fopen() resource fopen ( string filename, string mode [, bool use_include_path [, ...
- vue学习【番外篇】vue-cli脚手架的安装
大家好,我是一叶,今天和大家分享的是vue-cli脚手架的安装,关于vue-cli的优点,我就不赘述了. 一.检查安装node 安装vue-cli之前,先检查node是否安装.win+R,输入cmd打 ...
- OpenCV 学习笔记(1-1)opecv3.41及其扩展库在VS2015下配置
其他正常 opencv_aruco341.lib opencv_bgsegm341.lib opencv_bioinspired341.lib opencv_calib3d341.lib opencv ...
- 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记番外(1) - JLinkScript妙用
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记番外篇之JLinkScript妙用. JLinkScript 文件是配套 J-Link 调试器使用的脚本,这个脚本适 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- Netty学习笔记(番外篇) - ChannelHandler、ChannelPipeline和ChannelHandlerContext的联系
这一篇是 ChannelHandler 和 ChannelPipeline 的番外篇,主要从源码的角度来学习 ChannelHandler.ChannelHandler 和 ChannelPipeli ...
随机推荐
- Windows API初练手 -- 疯狂写文件代码
警告:恶作剧软件,慎用!仅供初学者研究代码所用!!! 提示:默认文件创建目录在"D:\test",如果需要使用的话请自行更改目录. 1. Windows API 版本 (调用系统函 ...
- hdu4642博弈(矩阵)
题意: 给一个01矩阵,每次可以选择1的格子,选择之后以他为左上角的矩阵全都取反,两个人轮班取,不能取的人输. 思路: 博弈的题目,结论是右下角是0就输,1就赢,原因可以这么 ...
- CVE-2011-0104:Microsoft Office Excel 栈溢出漏洞修复分析
0x01 前言 上一篇讲到了 CVE-2011-0104 漏洞的成因和分析的方法,并没有对修复后的程序做分析.之后在一次偶然的情况下,想看一看是怎么修复的,结果却发现了一些问题 环境:修复后的 EXC ...
- Python 爬虫之Scrapy框架
Scrapy框架架构 Scrapy框架介绍: 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自己从零 ...
- Portswigger web security academy:OS command injection
Portswigger web security academy:OS command injection 目录 Portswigger web security academy:OS command ...
- Day003 包机制
包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包语句的语法格式为: package pkg1[.pkg2[.pkg3....]]; 一般利用公司的域名倒置作为包名; 例如: ...
- Linux yum 报错:One of the configured repositories failed (Unknown), and yum doesn't have.
1. 请先确定你是无法联网还是配置问题. ping www.baidu.com 如果是正常ping那可以看这个帖子完成配置 https://blog.csdn.net/weicuidi/articl ...
- Vue中的MVVM
MVVM(Model View VueModel) View层: 视图层 在我们前端开发中,通常就是DOM层 主要的作用就是给用户展示各种信息 Model层: 数据层 数据可能是我们固定的死数据,更多 ...
- 解决Latex输出PDF纸张自适应大小及中文无法显示问题
遗留的问题 之前我们进行了基于texlive定制chemfig化学式转换Python服务镜像,虽然完成pdf的输出服务改造,但是输出效果并不是太好,如下图: 这个图有两个比较严重问题 不支持中文 空白 ...
- Scrum Meeting 4
Basic Info where:共享空间 when:2021/4/29 target: 简要汇报一下已完成任务,下一步计划与遇到的问题 Progress Team Member Position A ...