flask重启后端口被占用的问题解决(非kill)
作者:今天上上签 发布时间:2021-06-24 16:11:24
标签:flask,端口,占用
问题描述
我在flask程序中,启动了另一个python程序-test.py:
os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')
当我结束掉flask程序再启动时,就会报端口被占用的错误:
Port 5000 is already in use
而占用我5000端口的程序,恰恰是我在flask中运行的test.py程序
解决办法一:杀掉占用端口的进程
首先运行netstat命令,找到占用5000端口的pid,然后kill掉进程,再次启动flask
netstat -npl |grep 5000
tcp 0 0 1xx.1xx.xx.xx:5000 0.0.0.0:* LISTEN 9345/python
kill -9 9345
网上基本全是这种方法换着花样复制粘贴,虽然能解决问题,但这样的话,我原本启动的test.py程序就不得不被kill掉,显然这并没有解决根本问题,治标不治本。
解决办法二:换用python命令的提交方法
我们现在问题的关键是为什么我在flask中启动的程序,会一直占用我们的端口号,经过不断试验,最终找到了问题所在:之所以端口号被占用,是因为我们用的提交命令:
os.system('nohup python /opt/test/test.py >/dev/null 2>&1 &')
用os.system提交,我们可以理解为运行的test.py程序是flask进程管理的一个分进程,所以当flask结束后,这个分进程依然会占用我的5000端口号。
所以,我们改用如下方式提交:
subprocess.Popen('nohup python /opt/test/test.py >/dev/null 2>&1 &', shell=True)
subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,跟flask进程没有关系了,因此也就从根本上解决了端口被占用的问题。
来源:https://blog.csdn.net/bradyM/article/details/126425835


猜你喜欢
- Hello every, 我是Sunrise_Chen,有人知道我吗?好久没来这里了,以前偶尔会来这里潜水今天心情很好,写了几个特效果。特效
- Python中的数据类型共有六个,分别是:字符串,数字,布尔类型,列表,元祖,字典,集合其中分为可变的类型和不可变的:可变类型:列表,字典,
- /************************************************************ * Code
- import wx import imagesclass DemoTaskBarIcon(wx.TaskBarIcon): &nb
- 什么是Selenium先带领大家学习下Selenium的基本概念吧。Selenium主要用于web应用程序的自动化测试,但并不局限于此,它还
- 具体代码如下所述:import sysfrom PySide2.QtGui import *from PySide2.QtCore impo
- 一、功能实现对学生对个人信息的增删查改实现后台对所有学生信息的操作二、平台windows+pycharm(python开发工具)三、逻辑框图
- PowerDesigner简介 工具的用途 :这里我只介绍他在SqlServer数据库的应用,其它的我也不懂。工具的好处 : 个人
- 试了一下,xmlDoc.save()行不同,就试着用fso做了出来。整理一下,供大家discuss。由于用js操作本地xml文件之后save
- 零、SQLAlchemy是什么?SQLAlchemy的官网上写着它的介绍文字:SQLAlchemy is the Python SQL to
- 相信大家在学习python编程时绝对离不开数据库的连接,那么我们就用python来连接数据库实现一个简单的图书借阅系统。其实也很简单,就是在
- 好多同志对 iframe 是如何控制的,并不是十分了解,基本上还处于一个模糊的认识状态.注意两个事项,ifr 是一个以存在的 iframe
- Microsoft SQL Server 2008通过与Microsoft Office的深度集成,为所有人提供了可用的商业智能,以合适的价
- 背景介绍作为一款产品,往往希望能得到用户的反馈,从而通过对用户行为的分析进行功能、交互等方面的改进。然而直接的一对一的用户交流是低效且困难的
- matplotlib窗口图标默认是matplotlib的标志,如果想修改怎么改呢?由于我选择的matplotlib后端是PyQT5,直接查看
- 本文为大家分享了童年掌机游戏,基于pygame实现打砖块的具体代码,供大家参考,具体内容如下项目背景: 小时候有过一个掌机游戏机,里面有俄罗
- 本篇介绍Python中的引用。首先想一想如图示例。在python中,值是靠引用来传递来的。用id()来判断两个变量是否为同一个值的引用。如图
- 有时需要将数组转成伪数组(ArrayLike),如下 var ary = ['one','two','
- handle non numerical data举个例子,将性别属性男女转换成0-1,精通ML的小老弟们可以略过本文~~,这里不考虑稀疏向
- 本文主要研究的是python将字典内容存入mysql,分享了实现代码,具体介绍如下。1.背景项目需要,用python实现了将字典内容存入本地