位置: 编程技术 - 正文

Python守护进程和脚本单例运行详解(守护进程和普通进程)

编辑:rootadmin

推荐整理分享Python守护进程和脚本单例运行详解(守护进程和普通进程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:守护进程和普通进程,python 守护进程模块,python守护线程的作用,python守护线程与非守护线程,flask 进程守护,守护进程编写,守护进程编写,python 守护进程,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇文章主要介绍了Python守护进程和脚本单例运行,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、简介

守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行。

Python有时需要保证只运行一个脚本实例,以避免数据的冲突。

二、Python守护进程

1、函数实现

可以通过命令ps -ef | grep daemon.py查看后台运行的继承,在/tmp/daemon_error.log会记录错误运行日志,在/tmp/daemon_stdout.log会记录标准输出日志。

2、类实现

运行结果:

它是当Daemon设计成一个模板,在其他文件中from daemon import Daemon,然后定义子类,重写run()方法实现自己的功能。

不足:信号处理signal.signal(signal.SIGTERM, cleanup_handler)暂时没有安装,注册程序退出时的回调函数delpid()没有被调用。

Python守护进程和脚本单例运行详解(守护进程和普通进程)

然后,再写个shell命令,加入开机启动服务,每隔2秒检测守护进程是否启动,若没有启动则启动,自动监控恢复程序。

三、python保证只能运行一个脚本实例

1、打开文件本身加锁

注意:open()参数不能使用w,否则会覆盖本身文件;pidfile必须声明为全局变量,否则局部变量生命周期结束,文件描述符会因引用计数为0被系统回收(若整个函数写在主函数中,则不需要定义成global)。

2、打开自定义文件并加锁

3、检测文件中PID

4、检测特定文件夹或文件

也可以检测某一个特定的文件,判断文件是否存在:

上述os.kill( pid, 0 )用于检测一个为pid的进程是否还活着,若该pid的进程已经停止则抛出异常,若正在运行则不发送kill信号。

5、socket监听一个特定端口

可以将该函数使用装饰器实现,便于重用(效果与上述相同):

四、总结

(1)守护进程和单脚本运行在实际应用中比较重要,方法也比较多,可选择合适的来进行修改,可以将它们做成一个单独的类或模板,然后子类化实现自定义。

(2)daemon监控进程自动恢复避免了nohup和&的使用,并配合shell脚本可以省去很多不定时启动挂掉服务器的麻烦。

标签: 守护进程和普通进程

本文链接地址:https://www.jiuchutong.com/biancheng/381362.html 转载请保留说明!

上一篇:Python 基础知识之字符串处理(python 基础 详细)

下一篇:Python中的sort()方法使用基础教程(python中sort()的用法)

  • 增值税专用发票的税率是多少啊
  • 什么是土地使用权终结
  • 信息技术服务增值税
  • 按月支付劳务费开发票
  • 哪些费用可在缴纳医保
  • 招标押金如何做账务处理?
  • 服务费发票需要交印花税吗
  • 公司名下的车过户到个人名下费用
  • 个人生产经营所得税计算器
  • 生产研发设备
  • 员工离职补偿需要计提吗
  • 独立核算自负盈亏和统负盈亏怎么选
  • 企业最常用的业务分录
  • 用现金购买办公设备会计分录
  • 小规模纳税人可以抵扣进项税吗
  • 上年减值准备收回如何做账务处理呢?
  • 募捐建议
  • 个人开利息发票的税率与会计分录
  • 当月支付租金没有发票
  • 契税法律依据
  • 开具发票只有票号可以吗?
  • 个体户开票超了30万
  • 提供物业管理服务税率
  • 资本溢价公积金计算公式
  • 工厂生产的配件怎么入账
  • 季度利润表本月数和本年累计数
  • 支票挂失需要本人去吗
  • 质保金付款时怎么付
  • 库存商品出口退税的账务处理?
  • 苹果电脑优酷视频打不开
  • 如何启用系统引擎
  • PHP:Memcached::getVersion()的用法_Memcached类
  • 公司培训赔偿
  • 企业购入的专利权属于什么
  • 弥补以前年度亏损最多几年
  • 马尔堡酒庄
  • 企业投资收益要交印花税吗
  • php trait用法
  • php怎么取数组
  • 【torch.nn.Parameter 】参数相关的介绍和使用
  • 以股权出资成立公司的模板
  • 解决php程序运行问题
  • x-s和web_session
  • 调参数是什么意思
  • 销售自己使用过的物品的税率
  • 成本票和费用票一样吗
  • 生产企业出口转内销增值税申报表怎么填
  • 将购入的原材料用于不动产在建工程
  • mysql卡住了
  • 小规模纳税人交通运输服务税率
  • 已计提的城建税有误,怎么办
  • 财政拨入的专项款专账怎么做
  • 事业单位收到发票怎么处理
  • 棚户区改造国家给政府拨款吗
  • 计提折旧是哪个月的
  • 应收分保合同准备材料
  • 资本公积转为实收资本会计科目
  • 产权转移书据印花税
  • 固定资产净值如何处理
  • 主营业务成本可以设明细科目吗
  • 出差补贴应该怎么入账
  • 企业采用公允价值进行会计核算,所体现的会计质量要求
  • mysql5.7.21安装教程
  • sql语句 时间差
  • mysql数据库视频
  • win8.1 multiple edition
  • windows自带安全
  • mac系统怎么新建txt
  • windows8的word在哪里
  • win7系统怎么禁止更新
  • ugui scrollview
  • ubuntu搭建android开发环境
  • dos命令批处理
  • bootstrap 下拉按钮
  • Node.js中的construct构造函数
  • javascript的弹窗
  • android PopupWindow显示位置设置
  • 手机unity游戏
  • 湖北商铺契税2021年新规
  • 保险发票不包含哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设