Julia 在 HTTP WebSocket 块中挂起异常

Posted

技术标签:

【中文标题】Julia 在 HTTP WebSocket 块中挂起异常【英文标题】:Julia hangs on exceptions in HTTP WebSocket block 【发布时间】:2021-04-07 08:44:13 【问题描述】:

我是 Julia 新手,在侦听 WebSocket 流时尝试抛出异常时遇到了一些奇怪的行为。例如,下面的代码 sn -p 在打印连接消息后会永远挂起:

using HTTP

HTTP.WebSockets.open("wss://www.bitmex.com/realtime") do ws
    message = String(readavailable(ws))
    println(message)
    error("This is an error")
end

如果引用了未定义的变量,这也会冻结(这是我第一次遇到问题的方式)。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

经过一番调查,它看起来像是来自HTTP 包。 close 函数挂起,因为服务器一直在发送消息 (https://github.com/JuliaWeb/HTTP.jl/blob/2a03ca76376162ffc3423ba7f15bd6d966edff9b/src/WebSockets.jl#L237)。

HTTP 切换到WebSockets 解决了这个问题:

using WebSockets

WebSockets.open("wss://www.bitmex.com/realtime") do ws
    data, success  = readguarded(ws)
    message = String(data)
    println(message)
    error("This is an error")
end

【讨论】:

以上是关于Julia 在 HTTP WebSocket 块中挂起异常的主要内容,如果未能解决你的问题,请参考以下文章

Julia 是如何实现多方法的?

与 Python+Numba LLVM/JIT 编译的代码相比,Julia 的性能

csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中

julia系列1:介绍与安装

julia系列1:介绍与安装

如何将 Julia 升级到新版本?