我使用threading.start_new_thread()
启动一个简单的TCP服务器,例如,端口6677在与主线程分开的线程中。基本上所有这个服务器都是:
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(('', 6677))
sock.listen(5)
...
print 'Listening...'
while True:
conn, addr = sock.accept()
print 'connected!'
...
在单独的线程中启动该服务器后,我在主线程中运行一个简单的Flask应用程序:
app.run()
默认使用端口5000.Flask应用程序运行正常,但导致[em>其他线程中的bind()调用中已经使用了[Errno 98]地址!这是在从二级线程打印“Listening ...”之后。这里有什么黑魔法?两台服务器可以不在同一地址的不同端口上监听吗?
答案 0 :(得分:1)
你打电话给app.run(debug=True)
吗?
如果是这样,Flask自动重装系统将启动您的过程,然后将其杀死,然后再次启动(我相信)。
改为app.run(debug=True, use_reloader=False)
。