【发布时间】:2014-05-11 23:59:11
【问题描述】:
我目前正在为 IPython 构建 Erlang 语言内核后端,并且正在控制台中对其进行测试。
我的工作:
- 启动 ipython 控制台和 erlang 内核
- Erlang 内核读取 kernel.json 文件的内容,该文件包含 zmq 的所有端口号
- 使用 erlzmq2 库为
shell、heartbeat、control、iopub套接字创建 zmq 绑定。 - 创建函数来解析来自 IPython 的消息
- 为心跳服务器创建一个进程以在其上运行并向 IPython 返回消息
- 为 Shell Socket 创建了一个进程来接收和响应以下消息
- kernel_info_request -> kernel_info_reply
- execute_request -> execute_reply
- 此外,iopub 套接字发送这些消息
- 状态
- pyout
如果你还在我身边,这一切都会奏效。
第一个 IPython In[1]: 提示出现,我可以输入代码,将其发送到后端并从 ipython 接收 execute_request 消息。
但是,我的问题是在我收到 execute_request 的这一系列事件之后:
- 向 IPython 发送忙碌状态
- 执行代码并捕获输出字符串
- 向 IPython 发送 pyout 消息
- 向 IPython 发送了 execute_reply
- 向 IPython 发送空闲状态
发送这些消息后,没有任何反应。我不再收到来自 IPython 的消息,代码执行也没有输出到控制台,也没有出现新的提示,要求用户提供更多输入。
我只是想知道我是否以正确的顺序发送消息,还是发送正确的消息?
【问题讨论】:
-
首先:这太棒了!代码是否已经在某处可用?第二:您使用的是哪个版本的 IPython?
-
嗨,该代码尚不可用:(。它很快就会可用(一旦我清理它重构一些代码)......也许下周:)。我正在使用 IPython 2.0.0-dev 和消息协议版本 4.1
-
如果您想知道,IErlang 现在可以通过github.com/robbielynch/ierlang获得
标签: python erlang ipython zeromq