当前位置: 首页 > news >正文

Docker中的无法正常使用os.system

但在尝试使用docker运行index.py的时候,出了问题。

问题

众所周知,docker容器在正常终止时会向主进程(pid 1)发送一个SIGTERM信号。一般来说,程序是能正常接收这个信号,并且退出的。

但……在index.py中偏偏不行!

原因

众所周知,Python的os.systemos.system调用的是C函数system

它的执行过程可以用三个词概括:fork、exec、wait。

这里会出现一个问题,它不仅会阻塞调用它的程序,并且在所执行的程序执行完成之前,在Python里处理信号的程序将不会被调用。

解决

于是,如何解决,清晰明了。使用下述函数代替代码里的每一处 os.system 即可。

import os
import time
import signal
import subprocessdef exec(*commands):process = subprocess.Popen(" ".join(commands), cwd=os.getcwd(), shell=True)def sigterm_handler(signo, frame):process.terminate()process.wait()signal.signal(signal.SIGTERM, sigterm_handler)while process.poll() is None:time.sleep(1)return process.returncode

反思

不要滥用os.system,尽量以subprocess代替。

http://www.dtcms.com/a/474742.html

相关文章:

  • 中济建设官方网站慧聪网登录
  • 北京网站建设的网站的设计页面
  • python中mod函数怎么用
  • 996引擎-批量复制图集文件
  • 01、如何学习单片机
  • 【技术文档:Dify 本地 Docker 环境邮件服务排错指南】
  • 安装 Win10/11 系统下 WSL2+Ubuntu20.04
  • 苏州专业做网站比较好的公司汕头百姓网交友
  • Git简介及安装
  • Git版本控制工具合并分支merge命令操作流程
  • SAP Business Suite:引领企业AI从工具到智能协同的全面转型
  • 门户网站申请ppt模板免费下载 动态
  • 网站建设模版文档WordPress修改前端
  • 数据结构<c语言>——串
  • 基于单片机的16位逐次逼近AD电路设计
  • 网站建设交流会石狮建设网站
  • 小白也能开发 Chrome 插件
  • 网站建设费的摊销期wordpress显示所有文章列表
  • 《以 Trae 为桥:高效集成豆包 1.6 API 的实践与思考》
  • 做网站看好金石网络高新区做网站
  • cursor自动绑定虚拟卡
  • 做网店在素材网站找的图侵权吗现在帮别人做网站赚钱不
  • 网站用微信登录 要怎么做惠山网页制作
  • IP白名单配置:使用/24子网掩码是否有效
  • Ubuntu Linux 入门指南
  • 提高网站收录江西新农村建设权威网站
  • Vue和Vue CLI
  • SQL 索引速查:CREATE / DROP / SHOW INDEX 用法全解
  • ru后缀的网站中信建设有限责任公司地址
  • 后端开发学习路线:从入门到精通