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(" ...
随机推荐
- fork后子进程从哪里开始执行
子进程和父进程都从调用fork函数的下一条语句开始执行
- JS:输出9*9乘法表
<html> <head> <title>9*9 multiplication table</title> </head> <body ...
- vue-gemini-scrollbar(vue组件-自定义滚动条)
vue-gemini-scrollbar(vue组件-自定义滚动条) https://segmentfault.com/a/1190000013338560
- SpringBoot自定义一个starter
@Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自动配置类生效 @AutoConfigureAfter //指定自动配置类的顺序 ...
- zabbix user-defined item
1.user-defind item at:/etc/zabbix/zabbix_agent.conf format: UserParameter=<key>,<command> ...
- Spring框架 (log4j :WARN No appenders could be found for logger log4j:WARN Please initialize the log4j system properly.)问题解决
Spring框架需要的jar包 1.Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.baidu.com/s/ ...
- nodejs实现网站数据的爬取
// 引入https模块,由于我们爬取的网站采用的是https协议 const https = require('https'); // 引入cheerio模块,使用这个模块可以将爬取的网页源代码进行 ...
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框(转载)
https://blog.csdn.net/evangel_z/article/details/7332535
- 洛谷——P4932 浏览器
P4932 浏览器 __stdcall给了你n个点,第i个点有权值x[i],对于两个点u和v,如果x[u] xor x[v]的结果在二进制表示下有奇数个1,那么在u和v之间连接一个Edge,现在__s ...
- POJ-1190-生日蛋糕(深搜,剪枝)
生日蛋糕 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23049 Accepted: 8215 Description 7月1 ...