zmq.error.ZMQError: Address already in use
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、
zmq.error.ZMQError: Address already in use的更多相关文章
- [WebRTC/JsSIP] AUDIO RTP REPORTS ERROR: [Remote Address Error!]
问题描述: 在使用FreeSWITCH WebRTC 测试时,FS回复 502 Bad Gateway.查看FS日志 [DEBUG] switch_core_media.c:5147 AUDIO R ...
- Error running : Address localhost:1099 is already in use
运行报错: Error running : Address localhost:1099 is already in use 解决方法: 打开任务管理器,将后台的java.exe进程都关掉,再次运行 ...
- 关于Keil C51中“ERROR L107: ADDRESS SPACE OVERFLOW ”的总
最近写一个关于单片机播放音乐的程序,出现如下错误: *** ERROR L107: ADDRESS SPACE OVERFLOW ... ... Program Size: data=167.6 xd ...
- Centos7 开机显示 ERST: Failed to get Error Log Address Range” 导致无法开机解决方法
开机显示 ERST: Failed to get Error Log Address Range” 导致无法开机,也无法重新安装系统,解决方法:开机进入BIOS , 关闭ACPI选项即可正常开机
- [error]Flask Address already in use
在Python的Flask框架下Address already in use [地址已在使用中] 出现这种错误提示, 说明你已经有一个流程绑定到默认端口(5000).如果您之前已经运行过相同的模块,则 ...
- keil中编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW
解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNw ...
- ERROR: openstack Error finding address for http://10.16.37.215:9292/v1/images: [Errno 32] Broken pipe
Try to set: no_proxy=10.16.37.215 this should help 转自: http://askubuntu.com/questions/575938/error-i ...
- ZMQ相关
一般来说,做bind的是服务端,做connect的是客服端.zmq的bind和connect与我们通常的socket中bind和connect是不一样的,最起码的,我们它没有启动的先后顺序,而在我们通 ...
- linux系统中errno与error对照表
1.使用了一个小程序输出所有的errno对应的error字符串,代码如下 #include <errno.h> void showError(int err){ printf(" ...
随机推荐
- saltstack 源码安装
面向对象编程(oop) 面向对象: 面向对象三大特性: 封装 继承 多肽封装: 封装就是将具体的客观事物封装成抽象的类.并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可行的进行信息隐藏继承 ...
- 输入防抖 vue # 输入搜索的时候 及时搜索的快速访问接口的 解决方案 vue 中使用防抖和节流
输入防抖 watch: { value (newVal, oldVal) { if (this.timer) { clearTimeout(this.timer) } this.timer = set ...
- 转--C#编程总结
C#编程总结--总目录 http://www.cnblogs.com/yank/p/3543423.html
- Chrome浏览器商店安装的插件保存到本地
Chrome自67版本开始,不能从第三方下载插件拖动安装,要么就是以前的方法安装修改为zip格式,会有报错(报错如下图),强迫症肯定忍不了报错的:按照网上说法,是第三方插件的压缩算法和Chrome商店 ...
- web前端中的一些注释表达法
1.HTML注释 <!--注释的内容--> 注释的地方(根据个人习惯可能有所不同): 结束标签的后面,这一切都是为了程序在嵌套的时候更加方便.明了,如: <div class=&qu ...
- 小程序之Button组件,函数的调用与简单的逻辑
我们要实现一个简单的功能,在界面上放置一张图片,设置重新加载按钮,能更新图片. WXML代码: <!--index.wxml--> <view clas="index&qu ...
- Openjudge-4110-圣诞老人的礼物
这一题是一道贪心的题目,但是它比较特殊的地方在于糖果可以分开拿,我们不必整箱拿,所以我们可以直接就把糖果按照价值比从大到小排序,然后整箱装不下的时候,剩余重量乘以它的价值比,这样就算出来了. 对于结构 ...
- Windows 命令收集
定时关机命令:schtasks /create /tn "关机" /tr "shutdown /s" /sc once /st 23:55
- 28. TRIGGERS ,29. USER_PRIVILEGES,30. VIEWS
28. TRIGGERS TRIGGERS表提供有关触发器的信息.要查看有关表的触发器的信息,您必须具有该表的TRIGGER权限. TRIGGERS表有以下列: TRIGGER_CATALOG :触发 ...
- python3.x Day6 IO多路复用
IO多路复用import asyncio 这个是异步IO模块 这个还不知道怎么用 select poll epoll 都是IO多路复用 windows 仅支持select linux2.6以后 支持e ...