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.

参考自这篇文章http://stackoverflow.com/questions/9276078/whats-the-right-approach-for-calling-functions-after-a-flask-app-is-run

如果你想要避免加载两次,应该设置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的更多相关文章

  1. [WebRTC/JsSIP] AUDIO RTP REPORTS ERROR: [Remote Address Error!]

    问题描述: 在使用FreeSWITCH WebRTC 测试时,FS回复  502 Bad Gateway.查看FS日志 [DEBUG] switch_core_media.c:5147 AUDIO R ...

  2. Error running : Address localhost:1099 is already in use

    运行报错: Error running  : Address localhost:1099 is already in use 解决方法: 打开任务管理器,将后台的java.exe进程都关掉,再次运行 ...

  3. 关于Keil C51中“ERROR L107: ADDRESS SPACE OVERFLOW ”的总

    最近写一个关于单片机播放音乐的程序,出现如下错误: *** ERROR L107: ADDRESS SPACE OVERFLOW ... ... Program Size: data=167.6 xd ...

  4. Centos7 开机显示 ERST: Failed to get Error Log Address Range” 导致无法开机解决方法

    开机显示 ERST: Failed to get Error Log Address Range”   导致无法开机,也无法重新安装系统,解决方法:开机进入BIOS , 关闭ACPI选项即可正常开机

  5. [error]Flask Address already in use

    在Python的Flask框架下Address already in use [地址已在使用中] 出现这种错误提示, 说明你已经有一个流程绑定到默认端口(5000).如果您之前已经运行过相同的模块,则 ...

  6. keil中编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW

    解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNw ...

  7. 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 ...

  8. ZMQ相关

    一般来说,做bind的是服务端,做connect的是客服端.zmq的bind和connect与我们通常的socket中bind和connect是不一样的,最起码的,我们它没有启动的先后顺序,而在我们通 ...

  9. linux系统中errno与error对照表

    1.使用了一个小程序输出所有的errno对应的error字符串,代码如下 #include <errno.h> void showError(int err){ printf(" ...

随机推荐

  1. Python3 OpenCV3 图像处理基础

    开发环境搭建 本人使用的是Ubuntu 16.04LTS. 1.安装Python3 ## 其实 Ubuntu 16.04 系统自带了 Python 3.5.2,因此不需要再安装了?但是需要安装一些开发 ...

  2. VBA Promming入门教程——变量的使用

    数据类型 VBA中的数据类型可分为两种 示例 String Sub Main Dim s as string s = "Hello" msgbox(s) End Sub Singl ...

  3. Error:Failed to resolve: com.afollestad:material-dialogs:

    http://www.chenruixuan.com/archives/1068.html 背景: 同事把Android项目直接考给了我...我在Android Studio上运行,然后提示: Err ...

  4. docker部署xxl-job

    资源 xxl-job:1.9.1 docker:17.05.0-ce maven:3.5.0-jdk-8 tomcat:8.5.23.0 mysql:5.6.40 一.创建数据库 克隆项目到服务器下 ...

  5. 时钟Demo

    其实是一个很简单的Demo,可以编译了拿NSIS打包.最近在做富文本编辑器和补C++不记得的东西吧,项目遥遥无期. //clock.pro #----------------------------- ...

  6. 执行BarTender

    1.配置.btw模板 1.1.左侧创建“具名数据源” 1.2.条码属性,选择刚才的数据源 1.3.保存 2.配置.btin服务 2.1.点击 工具/Integration Builder” 2.2.创 ...

  7. Shell转大写为小写

    #!/bin/bash # read a a=$(echo "$a" | awk '{print tolower($0)}') #转大写为小写 if [[ $a = 'y' || ...

  8. mysql 数据库 show命令

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 1. show tables或show tables fr ...

  9. openwrt vsftp

    vsftp: very security ftp openwrt配置:make menuconfig  ==> network ==> file transfer ==> vsftp ...

  10. xenserver tools 安装

    mkdir -p /mnt/xtools mount /dev/cdrom /mnt/xtools cd /mnt/xtools/Linux/ ./install.sh -n init 6