2014-01-25 131 views
0

我有一个使用Flask的网络服务器设置,它的工作原理。另外,我有一个演示TCP服务器,它也可以工作。我希望他们在同一个过程中运行,以便他们能够交流;然而,我遇到了困难,因为他们既想打开一个端口,而我得到的错误:同时运行网络服务器和TCP服务器

socket.error: [Errno 98] Address already in use 

我的理解是,一个进程无法打开多个端口,但纠正我,如果我错误。是否有可能运行每个都有自己的端口的子进程?还是有一种简单的方法在Python中的进程之间进行通信?

什么是获得网络服务器和TCP服务器来传递信息的最佳方式,比如更新一个在另一个中反映的信息?

谢谢!

+0

您是否在调试模式下在开发Web服务器上运行Flask应用程序?如果你用'debug = False'运行它,有什么不同? – Miguel

回答

0

对于flask web服务器和TCP服务器使用不同的端口号。

+0

我是:烧瓶5000,烧杯12321。 – Jacob

+0

您可能会在调试时意外运行两次相同的进程,请运行此命令ps -fA | grep蟒蛇并杀死额外的进程 – chk

+0

没有。没有出现,重新启动也没有解决问题。 – Jacob

0

进程可以使用多个端口,但通常不需要使用相同端口的多个进程。

在这种情况下,你可能只需要一对SO_REUSEADDR年代,一个在每个过程: http://docs.python.org/3/library/socket.html

通常情况下,*九内核将拒绝允许从端口获取数据,即使是处理后那是使用它退出 - 一段时间。这被视为一个安全问题,因为否则其他进程可能会在此后监听端口,并获取用于第一个进程的数据。 SO_REUSEADDR告诉内核“不要那样做”。