zmq.error.ZMQError: Address already in use
2024-09-08 09:46:02
1、如下代码,启动的时候python app.py会报如题的错误
app.py #!/user/bin python
# -*- coding:utf-8 -*- import os
from datetime import timedelta
from flask import Flask, session, url_for, render_template, make_response, request, redirect
import zerorpcimport multiprocessing APP = Flask(__name__)
APP.secret_key = os.urandom(24)
APP.permanent_session_lifetime = timedelta(seconds=30 * 24 * 60 * 60)
class RPCServer(object):
def hello(self, filename):
return filename
@APP.route('/')
@APP.route('/index')
def index():
return render_template('index.html') @APP.route('/ok.htm',methods=['GET', 'POST','HEAD'])
def ok():
return render_template('ok.htm') @APP.route('/test')
def test():
session.permanent = True
_str = ''
if 'name' in session:
_str = session['name']
if 'nick' in session:
_str += '---' + session['nick']
#print session
return _str def runWeb():
print ("start webapp")
APP.run(host='0.0.0.0', port= 5000, debug=True, threaded=True) def runRPC():
#print "start rpc"
s = zerorpc.Server(RPCServer())
s.bind("tcp://0.0.0.0:4242")
s.run() if __name__ == "__main__":
p1 = multiprocessing.Process(target = runWeb)
p2 = multiprocessing.Process(target = runRPC) p1.start()
p2.start()
p1.join()
p2.join() # p1.run()
# p2.run() # p1.join()
# p2.join()
2、错误信息:
3、查看进程情况:
4、lsof -i:4242 、lsof -i:5000查看端口情况,发现rpc服务并没有启动
5、但是如果关掉flask的debug模式,就没有问题
6、原因是:flask的debug模式会额外开启一个进程,这个进程负责监控代码是否发生变化,如果发生变化,会自动重启应用,使新修改代码立即自动生效;因此我猜想,是这个进程破坏了rpc服务的启动。
DEBUG模式下flask多开一个线程来监视项目的变化。
The first thing it does is start the main function in a new thread so it can monitor >the source files and restart the thread when they change.
如果你想要避免加载两次,应该设置app.run(debug=True, use_reloader=False)
参考:
1、https://github.com/ipython/ipython/issues/6109
2、https://segmentfault.com/q/1010000000446372
3、
最新文章
- [转]Oracle VM VirtualBox虚拟机,Ubuntu虚拟机共享文件夹
- viewpage listview gridview加载本地大图多图OOM处理办法
- 封装Js库从获取控件的value值开始
- Dreamweaver修改页面编码
- Hive基本命令整理
- 【转】sublime text 2 下的Markdown写作
- 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)
- css 单位 px em rem
- pyqt之倒计时例子
- 蚁群算法和简要matlab来源
- 学习multiprocessing(2)
- XJOI练习2神奇的供水系统
- Program Thread 和 Process的不同点
- 并发编程(一)—— volatile关键字和 atomic包
- LVS,Keepalived,HAproxy区别与联系
- spring框架学习之--数据库操作增删改查
- springboot之使用redistemplate优雅地操作redis
- jQuery控制元素显示、隐藏、切换、滑动的方法
- oracle的sqlldr常见问题
- 把自己的代码发布到npm(npm publish)
热门文章
- Devops 技术图谱
- Linux-RedHat7.2 安装nginx托管.net core2.0
- vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示
- source 1.7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式)
- 模拟、字符串--P1042 乒乓球 题解
- C++学习周记
- 文本三剑客之grep
- 痛苦的版本对齐(3) cygwin下的路径引用(sed解决篇)
- Device eth0 does not seem to be present,delaying initialization问题
- SpringCloud源码地址