在另一个线程中使用Flask和另一个TCP服务器

时间:2013-10-09 19:43:34

标签: python sockets

我使用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 ...”之后。这里有什么黑魔法?两台服务器可以不在同一地址的不同端口上监听吗?

1 个答案:

答案 0 :(得分:1)

你打电话给app.run(debug=True)吗?

如果是这样,Flask自动重装系统将启动您的过程,然后将其杀死,然后再次启动(我相信)。

改为app.run(debug=True, use_reloader=False)