我在运行ipython笔记本服务器时遇到问题。我为笔记本编写了一系列自定义ROI(感兴趣区域)小部件,允许用户在笔记本中显示的图像上绘制矩形和椭圆形等形状,然后将有关形状的信息发送回运行的python上服务器。所有信息都通过widget traitlets传递;形状信息位于handles
类型的object
特征中。当我在端口8888(默认)上本地运行它并使用在同一台计算机上运行的firefox访问它时,一切正常。 (在这种情况下,系统是运行OSX Yosemite的Mac)。
现在我尝试通过从另一台计算机(在本例中为ubuntu linux)进行ssh连接并在主机上将本地端口8888转发到8888来远程访问它。这几乎可行:在客户端上运行的firefox能够访问ipython笔记本服务器,在笔记本中执行代码等.ROI小部件也显示并且似乎正常工作,除了一件事:没有关于绘制的形状的信息使其返回到服务器。
这不仅仅是远程访问的问题(尽管这对我的预期用途来说是最重要的)。如果我在本地运行,我有完全相同的问题,但使用8888以外的端口。例如,如果我在ipython_notebook_config.py
中将端口设置为9999,运行笔记本服务器并使用本地firefox访问它,我得到完全相同的问题。同样,如果我使用所有默认设置运行ipython notebook
两次,则第二个实例绑定端口8889,因为8888受第一个绑定。当我使用本地firefox访问运行在8888的服务器时,一切正常;当我访问运行在8889的同时运行的服务器时,我的小部件再次无法将信息发送回服务器。如果我使用--debug,我可以看到所有comm_msg
都已通过。运行在8888上的服务器按预期接收包含形状信息的消息。这些消息根本不会显示在运行8889的服务器的日志中。
有什么想法吗?
答案 0 :(得分:0)
我从未弄清楚我的问题的答案 - 为什么港口很重要。但是,我发现我的ROI小部件在JavaScript方面有一个新手错误(我对JS编程很新),修复后,所有问题都消失了。具有讽刺意味的是,现在的难题是它在我使用默认端口时的工作原理!