2014-11-06 42 views
0

我在運行ipython筆記本服務器時遇到問題。我爲筆記本編寫了一系列自定義ROI(Region Of Interest)窗口小部件,允許用戶在筆記本上顯示的圖像上繪製矩形和橢圓形狀,然後將有關形狀的信息發送回服務器上運行的python 。所有信息都通過小部件traitlets傳遞;形狀信息在handles類型object的traitlet中。當我在端口8888(默認設置)上本地運行它並使用運行在同一臺計算機上的Firefox進行訪問時,一切正常。 (在這種情況下,系統是運行OSX Yosemite的Mac)。ipython筆記本中的端口使用情況

現在我試圖通過從另一臺計算機(在這種情況下是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

這是離奇的。通訊消息應該通過與執行消息相同的websocket通道發送。我想不出爲什麼一個人會工作,其他人不會。 – 2014-11-06 23:36:07

回答

0

我從來沒有弄清楚我的問題的答案 - 爲什麼港口很重要。但是,我發現我的ROI小部件在JavaScript方面有一個新手的錯誤(我對JS編程相當陌生),修復後會讓所有問題消失。具有諷刺意味的是,現在的難題就是爲什麼它在我使用默認端口時起作用!